유니티

유니티 3D 쿼터뷰 액션게임 만들기 - 플레이어 점프 / 회피

nock_ji 2022. 4. 19. 13:30

유니티 3D 쿼터뷰 액션게임 만들기

 

👾 플레이어 점프 / 회피 

 

 


1.  코드 정리

 

🔻 기능에 따라 구분되도록 함수 분리 

Update() : 함수 호출

GetInput() : 버튼 입력

Move() : Player 이동값 설정

Turn() : Player 방향 설정

 


 

2.  점프 , 착지, 회피 구현

 

✏️  점프 버튼 입력 / 출력 / 한 번 만 점프하기 

 

- Player가 점프할 수 있도록 Rigidbody를 선언

-  버튼 입력을 받는 jDown / 점프 중임을 구분하는 Jumping 

 

 

-  Jump()는 점프버튼을 누르면서, 점프를 하고 있지 않을 때 실행됩니다

-  OnCollision--()은 Player이 Floor를 만나면 점프하지 않은 상태이므로, 한 번 만 점프가 가능하다

 

 

✏️  회피 및 착지 애니메이션

 

- Any State로 아무때나 실행, Exit로 원상 복귀

- Jump, Land, Dodge 애니메이션을 Transition으로 연결

📣  일회성 애니메이션은 Trigger 파라메터를 사용 (doDodge / doJump)

 

 

✏️ 점프할 때,

anim.SetBool()로 애니메이션 Jumping이 작동하도록 함

anim.SetTrigger()로 애니메이션 doJump 가 작동하도록함 (bool 값 필요X)

 

✏️ 착지할 때,

Jumping 하지 않도록 false를 지정

 

 

🔻 점프가 높을 때는 Edit - Project Settings - Physics에서 중력을 설정

 

 

 


3.  지형물리강화

 

🔻 정적 Static 체크 활성화

Player - Rigidbody - Collision Detection - Continuous 는 Static과 충돌할 때 효과적 

지형 오브젝트에 Rigidbody추가, use gravity 해제 비활성화, Is Kinematic 체크 활성화

 

 

🔻 마찰력 없는 벽을 만들기 위해 Physics Material 추가, 모두 0으로 설정, Minimum 

 

 


4.  회피 구현

 

✏️ 회피 애니메이션 구현

 

🔻 Dodge() 함수 

 

 

 

 

🔻  특정 조건을 추가하여 움직임을 Jump와 Dodge로 나누기

 

  • 현재 방향을 바꾸면서 회피가능 -> 회피할 때 방향을 바꾸지 않는 조건으로 변경 
  • 회피 도중 방향전환이 되지 않도록 회피 방향 Vector3 dodgeVec 를 추가
  • 회피를 하고 있을 때, '움직임 벡터 -> 회피방향 벡터'로 바뀌도록 구현

 

 

📌  Jump() 

< 점프버튼입력 + 점프하지 않음 + 움직이지 않을 때 + 회피하지 않음 >에 실행

 

 

📌  Dodge()

< 점프버튼 입력 + 점프하지 않음 + 움직이고 있을 때 + 회피하지 않음>에 실행

회피를 할 때 moveVec 대입

Jump보다 speed는 2배, 애니메이션 Dodge 실행, 회피함을 표시

 

📌  Invoke("함수명", 시간차);

함수로 시간차 함수 호출

 

 

 

 

🔻  DodgeOut()는 2배였던 속도를 원래대로 바꿔주고, 회피하지 않음을 표시

 

 

🔻  회피를 하고 있을 때, '움직임 벡터 -> 회피방향 벡터'로 바뀌도록 구현