2011-11-06 176 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

看看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你已經有了一個關於如何獲得KeyPresses的例子。你所要做的就是在那裏添加那個片段。我編輯我的帖子來展示一個簡單的例子。 – w00