2011-11-06 4 views
4

다음은 네 개의 추기경 방향으로 이동 내 코드입니다 :부드러운 문자 회전

if (Input.GetKeyDown(KeyCode.RightArrow)){ 
     transform.forward = new Vector3(0f, 0f, 1f); 
     } 
    else if (Input.GetKeyDown(KeyCode.LeftArrow)){ 
     transform.forward = new Vector3(0f, 0f, -1f); 
     } 
    else if (Input.GetKeyDown(KeyCode.DownArrow)){ 
     transform.forward = new Vector3(1f, 0f, 0f); 
     } 
    else if (Input.GetKeyDown(KeyCode.UpArrow)){ 
     transform.forward = new Vector3(-1f, 0f, 0f); 
     } 
내 캐릭터가 바로 내가 데 문제는 내가 부드럽게하는 방법을 알아 내기 위해 노력하고있다 여행의 4 개 방향으로 회전

밖으로 방향. 내가 말하고자하는 것은 캐릭터가 북쪽을 가리키고 서쪽으로 가려면 버튼을 서쪽으로 돌리는 대신에 서쪽 방향으로 부드럽게 회전하는 것을보고 싶습니다.

Ive를 검색하고 사용해 보았지만 그 중 아무 것도 작동하지 않았습니다. 어떤 해결책?

답변

4

Slerp 기능을 살펴보십시오. 이것은 아마도 당신이 원하는대로 할 것입니다.

http://unity3d.com/support/documentation/ScriptReference/Quaternion.Slerp.html

간단한 예 :

newdir.y=-135; // depends on which axis you want to turn... 

transform.rotation = Quaternion.Lerp(transform.rotation, newdir, Time.deltaTime * smoothSpeed); 

그래서 당신은 기본적으로 현재의 회전 사원 수를 얻을. 새로운 쿼터니언에이를 복사하고 하나 이상의 축에서 회전을 증가 또는 감소시킵니다.

+0

그게 작동하지 않았거나 좋은 명령을 복용 키 명령을 제공합니다. – SpicyWeenie

+1

@Paul 이미 KeyPress를 얻는 방법에 대한 예제가 있습니다. 당신이해야 할 일은 거기에 스 니펫을 추가하는 것뿐입니다. 간단한 예를 보여주기 위해 내 게시물을 편집했습니다. – w00