CharacterController 컴포넌트
- 3차원 게임에서 사람 형태의 캐릭터 움직임과 관련된 제어를 위해 사용.
- 캡슐 형태의 충돌 범위가 포함됨.
- lope Limit : 올라갈 수 있는 경사 한계 각
- tep Offset : 설정 값보다 낮은 높이의 계단을 오를 수 있음.
- Center : Capsule 충돌 범위의 중심점
- Radius : Capsule 충돌 범위의 반지름
- Height : Capsule 충돌 범위의 높이
게임 월드 구성, 플레이어 캐릭터 제작
- 배포가 되었던 패키지를 다운 받아 불러옴.
- prefab의 gameworld를 hierarchy로 불러와 게임 월드 생성.
- gameworld를 한 눈에 보기 위해 메인 카메라를 수정.
- 수정한 후 player 캐릭터를 생성.
Mesh Renderer
- 3D 게임 오브젝트가 화면에 보이게 하는 컴포넌트.
- Albedo : 게임 오브젝트에 보여질 이미지 설정
- Color : 게임 오브젝트에 보여질 색상 설정
3D 게임 오브젝트에 이미지, 색상을 설정하기 위해서는
1. material asset을 생성 및 이미지와 색상 설정
2. 설정이 완료된 material asset을 Mesh Renderer 컴포넌트에 등록
[결과]
- 오브젝트의 충돌범위가 CharacterController에 의해서 정해진 것을 알 수 있음.
플레이어 캐릭터 이동
- CharacterController.Move(Vector3 motion);
: 매개변수로 이동방향, 속도, Time.deltaTime 등의 세부적인 이동 방법을 설정하면 이동을 수행.
- CharacterController.SimpleMove(Vector3 speed);
: 매개변수로 3 방향의 이동속도를 넣어 호출하면 이동을 수행 가능.
- MoveTo 함수 매개변수로 방향정보를 가져오게 되면 해당 방향 정보를 moveDirection에 저장하는 코드.
- 플레이어를 제어하는 스크립트.
- player 오브젝트에 적용하면 방향키에 따라 플레이어가 이동함.
중력 적용
- movement3D에 중력 계수 설정 및 CharacterController.isGround를 사용.
- if 문 경우 gravity가 음수이기에 y축 이동방향 계속 감소.
- CharacterController.isGround
: 발 위치의 충돌을 체크해 충돌이면 true / 아니면 false 값을 나타내는 변수
- 모두 수정하여 적용시키면 플레이어를 올리면 자꾸 아래로 중력이 작용하여 떨어지는 것을 확인할 수 있음.
플레이어 캐릭터 점프
- movement3D 에 jump 변수 설정.
- JumpTo 함수를 설정하여 캐릭터가 바닥에 있으면 movedirection.y 값에 jumpforce를 대입하는 코드.
- jumpKeyCode에 대한 변수 설정.
- PlayerController 스크립트에 update 함수에 JumpTo를 호출하는 if 문 추가.
경사면 이동과 계단 이동
- Slope Limit은 경사각도
- 계단의 서로 인접한 두개 단 사이의 높이가 Step Offset 이하일 때 계단을 올라갈 수 있음.
- Step Offeset 0.4로 설정했을 경우 올라갈 수 있음.
'유니티' 카테고리의 다른 글
유니티 06. Navigation Mesh 응용 (0) | 2024.05.15 |
---|---|
유니티 06. Navigation Mesh 기초 (0) | 2024.05.15 |
유니티 05. 2D Tilemap - Extras (0) | 2024.05.09 |
유니티 05. 2D Tilemap Editor (0) | 2024.05.08 |
유니티 04. 2D 애니메이션 실습 (0) | 2024.05.01 |