유니티 3D 쿼터뷰 액션게임 만들기
👾 플레이어 이동
1. 지형 만들기
✏️ 지형 만들기
- Floor , Wall 4개 만들어서 플레이어가 움직일 공간 만들기
- 현재 시점에서 보이지 않는 두 벽은 Mesh Renderer를 비활성화하여 겉보기를 감춥니다
✏️ 텍스처 넣기
- Albedo 옆 원을 눌러 텍스처 이미지 선택
- Tiliing 개수를 높여 패턴 만들기
2. 플레이어 만들기
✏️ Player에 필요한 컴포넌트
Rigidbody + Collider + Script
🔻 Player Collider의 크기와 반지름을 조정하여 Player와 비슷한 크기로 만듭니다
✏️ 플레이어 상하좌우 이동 로직
- Input Axis 값을 받을 전역변수 선언
- moveVec 는 Player가 움직이는 Vector3 값입니다
📌 GetAxisRaw()
Axis 값을 정수로 반환하는 함수
📌 normalized
방향값이 1로 보정된 벡터
📌 transform.position
World 좌표 기준으로 물체를 이동, Vector에 해당하는 좌표로 이동
transform을 이용하여 Player를 이동, speed는 public으로 값 입력
✏️ 관성에 의한 쓰러짐
🔻 관성에 의한 쓰러짐은 Rigidbody - Constraints - Freeze Rotation으로 해결 !
🔻 transform 이동은 물리 충돌을 무시하는 경우가 발생하여 Collision Detection을 Continuous로 변경
3. 애니메이션
✏️ 걷고 뛰는 애니메이션
- Animator Controller 생성
- 생성한 Animator Player를 Player의 자식 오브젝트 Mesh Object에 투입
- Player을 통해 애니메이터 창 열기
- 다운받은 에셋에서 애니메이션 Walk 와 Run 을 애니메이터 창에 추가
- 애니메이션 상태 사이를 Transition으로 연결
- bool 타입 파라메터(매개변수) 추가
- 파라메터를 Condition에 사용하여 Transition 완성하기
- Has Exit Time 비활성화 해제
✏️ 애니메이션 동작에 따른 키보드 입력
- Run 애니메이션 및 속도가 Default값
- Walk의 키보드 입력과 속도를 다르게 설정
- Input manager에서 Walk 생성
- Walk 버튼입력을 받는 bool 형태의 wDown 선언
📌 GetComponentInChildren()
Animator 변수를 GetComponentInChildren() 으로 초기화
컴포넌트의 자식에 위치한 Animator를 가져옴
📌 Animator.SetBool()
스크립트를 통해 bool 값을 Animator 컨트롤러에 전달
Running은 Vector3(0, 0, 0)이 아닐 경우 실행
Walking은 Walk을 실행하는 버튼을 눌렀을 경우 실행
✏️ 애니메이션 동작에 따른 속도 설정
- Walk시 속도 줄이기
- 즉 Walk를 실행시키는 wDown을 입력받으면 0.3f 속도, 그렇지 않으면 1f 속도
📌 삼항연산자
조건 ? true일 때 값 : false일 때 값
4. 기본회전 구현
✏️ Player가 가는 방향으로 회전
📌 transform.LookAt()
지정된 Vector를 향해서 회전시켜주는 함수
5. 카메라 이동
🔻 카메라 위치 변경 로직
🔻 Player를 타겟으로 offset으로 카메라 위치를 설정
'유니티' 카테고리의 다른 글
유니티 3D 쿼터뷰 액션 게임 - 아이템 만들기 / Prefeb / Light Effect / Particle Effect (0) | 2022.04.19 |
---|---|
유니티 3D 쿼터뷰 액션게임 만들기 - 플레이어 점프 / 회피 (0) | 2022.04.19 |
유니티 Roll-a-ball 간단한 게임 만들기 (0) | 2022.04.17 |
유니티 게임 인터페이스 UI 기초 / Canvas / Text / Image / Button (0) | 2022.04.13 |
유니티 물리 충돌 이벤트 / OnCollision-- / OnTrigger-- (0) | 2022.04.12 |