먼저 해야 할 일 - 3D Object에 적용 할 에셋을 미리 다운 받는다.
Window -> AssetStore -> Search Online(Blus Button) Click -> Kawaii Slimes(무료) 검색 후 다운

Window -> Package Manager -> My Assets -> Kawaii Slimes -> Import


- 이제 Hierarchy에 3D Object(Plane, Capsule)을 생성한다.
- Plane의 좌표 (0, 0, 0), Capsule의 좌표(0, 1, 0)으로 설정한다.

- Project에 Import한 Kawaii Slimes을 클릭 한다.
- 여러 폴더 중 Prefabs를 클릭하여 Slime_03을 Hierarchy에 드래그하여 확인한다.

- Slime_03을 Player(Capsule)에 드래그하여 포함시킨다.
- Slime_03의 Position(0, -1, 0), Scale(3.5, 3.5, 3.5)로 변경한다
Slime_03을 할당하면 월드 좌표의 Position이 아니라 Player를 기준으로Position이 설정된다.
Scale같은 경우는 Slime_03을 할당 후 설정하거나, 할당 전 Player의 크기를 줄여놓고 할당하면
Capsule이 튀어나오지 않게 된다.


SlimeController의 Script에 코드를 작성해보자!

- public으로 선언한 변수들은 Unity Program 안에서 자유롭게 고칠 수 있도록 설정하였다.
- Update 함수의 moveDir은 Player가 이동해야 하는 방향을 값들을 저장할 Vector3 타입이다.
- Start 함수의 CharacterController 클래스 타입의 변수 controller는 Player에 할당된 CharacterController 컴포넌트의 기능을 참조하는데 사용될 변수이다.
- fRow와 fCol은 Player가 수평, 수직 움직임을 나타낼 변수이다.
- transform.Rotate를 통해 Player의 입력에 따라 y축 주위로 Slime을 회전시킨다.
- moveDir에 Vector3(0, 0, fCol * fMoveSpeed)를 주어 z축 전방으로 이동하는 속도를 결정한다.
- 그 다음 MoveDir Vector는 transform.TransformDirection 함수를 통해 월동 공간으로 변환되며 이동 방향이 Slime의 로컬 좌표가 아닌 전역 좌표를 기준으로 한다.
- Player가 점프 버튼(기본값은 Space)를 누르면 스크립트는 moveDir.y를 fJumpSpeed로 설정한다.
- fGravity * Time.deltaTime만큼 y를 줄임으로써 Slime에 중력을 적용한다.
- moveDir Vector는 Time.deltaTime으로 값이 조정되고 지정된 방향으로 Slime을 이동시키는 Controller.Move 메서드로 전달한다.
이제 Slime Controller 스크립트와 Physics의 Character Controller 컴포넌트를 할당한다.

그 후 실행하고 Player가 space 키를 누르면 점프하는 모습을 지켜보자!

이로써 우리의 Player는 점프를 할 수 있게 되었다!

'Unity > Unity' 카테고리의 다른 글
유니티(Unity) - 객체 이동(Object Move) (0) | 2023.02.18 |
---|
댓글