유니티 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배였던 속도를 원래대로 바꿔주고, 회피하지 않음을 표시
🔻 회피를 하고 있을 때, '움직임 벡터 -> 회피방향 벡터'로 바뀌도록 구현
'유니티' 카테고리의 다른 글
유니티 3D 쿼터뷰 액션게임 - 드랍 무기 입수와 교체 (0) | 2022.04.20 |
---|---|
유니티 3D 쿼터뷰 액션 게임 - 아이템 만들기 / Prefeb / Light Effect / Particle Effect (0) | 2022.04.19 |
유니티 3D 쿼터뷰 액션게임 - 플레이어 이동 (0) | 2022.04.18 |
유니티 Roll-a-ball 간단한 게임 만들기 (0) | 2022.04.17 |
유니티 게임 인터페이스 UI 기초 / Canvas / Text / Image / Button (0) | 2022.04.13 |