유니티에서 벽을 지나갈 수 없게 캐릭터를 이동시키는 방법은
1) rigidbody + Collider를 붙이고 rigidbody.MovePosition을 사용
2) CharacterController를 붙이고 Move 또는 SimpleMove를 사용
크게 두 가지의 방법이 있다.
1)은 완전한 물리처리로 이동하기 때문에 잘 비비면 얇은 벽은 들어갈 수 있는 버그도 생기기 때문에
레이캐스트를 발사해서 이동속도를 차단하는 등의 부가처리가 필요하다.
2)는 softSkin등의 기능들이 달려있어서 경사등을 부드럽게 올라갈 수 있다. 간단하게 구현가능.
CharacterController는 콜리더의 기능도 같이 달려있기 때문에, 별도의 콜리더를 달아줄 필요가 없다.
Move
- 인자는 float (방향 x 속도 x deltaTime를 곱해서 넘겨주자)
- 중력을 받지않는다! 때문에 중력은 수동으로 속도에 곱해줘야한다.
SimpleMove
- 인자는 float (방향 x 속도를 곱해서 넘겨주자)
- 지면방향 움직임만 설정하면 중력은 자동으로 계산된다.
가장 큰 차이는 deltaTime을 넘겨주지 않는 것과, 중력 값이 자동으로 계산되느냐의 차이다.
'🌍 Unity > 유니티 엔진 동작 관련' 카테고리의 다른 글
unity unable to install additional sdk platform (0) | 2020.08.26 |
---|---|
Unity Coroutine override 유니티 코루틴 오버라이드 (0) | 2020.08.14 |
Unity Coroutine 상속 / 코루틴 오버라이드 base 호출 (0) | 2020.06.16 |
Unity Compression Method LZ4 (0) | 2020.01.29 |
유니티 제네릭 클래스의 AddComponent 널 오류 ( Unity Genetic class AddComponenet Null ) (1) | 2019.12.21 |