Blog
Unity PATH GENERATOR 2
핸들과 바퀴가 자연스럽게 돌아가게 하려면 어떻게 해야할까 고민해보았다.
2019.11.04
자동차는 한번에 각도를 바꾸는게 아니라, Quaternion의 Slerp에 의해 천천히 회전하게 되므로,
자신의 예전각도와 현재각도의 차이를 계산하면 핸들이 어느정도로 틀어져야 하는지 알 수 있다.
방식
먼저, 자동차와 정확히 같은 Rotation을 공유하는 Vehicle Arrow를 만든다.
그 다음, 자동차보다 느리게 회전하는 Wheel Arrow를 만든다.
그리고 이 두 화살표의 각도 차이만큼
핸들을 z축으로, 바퀴들을 y축으로 회전한다.
바퀴의 회전
핸들은 두 화살표의 차이만큼만 z축으로 회전하면 되지만,
바퀴는 굴러가야 하기 때문에 y축으로도 회전해야 한다.
따라서 다음과 같은 코드를 추가한다.
속력은 Target ( 자동차 )의 Velocity를 크기만 받아와 참고한다.
주행 테스트
바퀴 꺾임 & 주행 테스트
아래는 방향에 따라 바퀴가 꺾이는 모습을 촬영한 것이다. 굴러도 가면서 커브시 회전한다.
바퀴 꺾임 & 주행 테스트 확대
잘 안보여서 확대샷을 촬영하였다.
잘 안보이지만 확인해보면 원하는 방향대로 돌아간다.
또, 바퀴가 뒤로 가는 것 처럼 보이지만 GIF로 변환하면서 생긴 에일리어싱 현상이다.
실제로 보면 잘 돌아간다.
핸들 꺾임 테스트
핸들을 촬영한 모습.
조명이 어두우면 안보여서 조명을 추가하였다.
핸들 꺾임 테스트 (확대)
역시 잘 안보여서 확대해 촬영하였다.
추가
바퀴의 회전을 알 수 있도록 스크롤 UI로 자동차의 속력을 제어할 수 있게 하였다.
How to Merge
1 . Asset > Prefab > PATH_GENERATOR 를 Scene으로 불러온다.
2 . 불러온 PATH_GENERATOR를 클릭하고, Inspector 창에서 다음과 같이 조절한다.
- 0번 . transform을 (0,0,0) / (0,0,0) / (1,1,1) 로 맞춘다.
- 1번 . 자동차를 넣는다. (Vehicle_LOD0)
- 2번 . 디버그 모드를 보고싶으면 체크한다. 아니면 해제하면 된다.
- 3번 . 자동차의 핸들을 넣는다. (Vehicle_LOD0 > Steering Wheel_LOD0)
- 4번 . 자동차의 바퀴들을 넣어준다. [0][1]은 앞바퀴, [2][3]은 뒷바퀴. (WheelFront … ~ WheelRear)
테스트 하면 된다.