2013-03-21 2 views
1

내 캐릭터 이동에 첫 번째 사람 컨트롤러를 사용하고 있습니다. 왼쪽 화살표 키를 누르면 캐릭터가 즉시 90도 회전하여 앞으로 나아갈 수 있습니다. 현재 화살표 키를 누르면 문자가 90도 회전하게됩니다. 그러나 캐릭터가 이전에 갖고 있던 앞으로의 기세는 두 번째로 떨어져서 캐릭터가 이전에 잠깐 움직였던 방향으로 미끄러 져 버립니다.선회 할 때 날카로운 90도 회전을하고 슬라이드를하지 않을 경우 유니티 문자 컨트롤러가 필요합니다.

내가 뭘 하려는지를 시각적으로 설명하기 위해 생각할 수있는 가장 가까운 예는 Temple Run에서 캐릭터가 날카롭게 변하는 방법입니다. 내 게임이 현재 어떻게 진행되고 있는지, 선반 위의 캐릭터가 날카로운 좌회전을한다면, 그는 원래의 기세를 유지하고 돌아서 자마자 가장자리에서 빠져 나올 것입니다.

내 캐릭터가 x/z 축에서 움직이기 때문에 방향 속도/기세를 바꿀 수있는 방법이 있는지 궁금합니다. 캐릭터가 x 축에있는 속도는 회전하면 z로 즉시 전환되고 다른 하나는 0으로 설정됩니다. 나는 내가 찾고있는 것을 달성하는 모든 솔루션에 대해 분명히 열려 있습니다.

첫 번째 사람 컨트롤러에서 CharacterMotor 클래스로 파고 있지만, 이것을 달성하기 위해 내가 조정할 수있는 부분을 아직 찾지 못했습니다.

모든 도움을 주시면 감사하겠습니다.

감사합니다.

답변

1

돌리기 전에 리지드 바디의 속도를 멈출 수 있습니다. 당신이이처럼 객체가, 계속 사용하면 0으로 설정, 변수에 현재 속도를 저장하여 그것으로 장난 시도 할 수 원하는 경우

this.rigidbody.velocity = Vector3.zero; 
this.rigidbody.angularVelocity = Vector3.zero; 

으로 회전하고 여전히 (이전 속도를 다시 넣어 앞으로).

글로벌 벡터와 작동하면 (객체가 아닌 세계의 관점에서 볼 때) 속도를 음수로 시도하여 실제로 '뒤로'이동하게 할 수 있습니다. 지금은 테스트 할 수 없지만 캐릭터를 돌리기 전에 먼저 속도를 0으로 설정해야한다고 생각합니다.

관련 문제