2013-08-01 52 views
1

使用基於Unity中wasd輸入的儀表系統。存儲鍵輸入Unity

if (Input.GetKeyDown(KeyCode.W)) 

    { 

     if ((Time.time - lastTapTime) < tapSpeed) 

     { 

      this.Trigger_FDodge(); 

      Debug.Log("ForDodge"); 

     } 

     lastTapTime = Time.time; 

    } 



    if (Input.GetKeyDown(KeyCode.D)) 

    { 

     if ((Time.time - lastTapTime) < tapSpeed) 

     { 

      this.Trigger_RDodge(); 

      Debug.Log("RightDodge"); 

     } 

     lastTapTime = Time.time; 

    } 

其中任何一個都是好的,但是,因爲我需要能夠在四個方向上閃避,所以我遇到了問題。雖然嚴格依然是雙擊,按'W'然後'D'會觸發閃避,只能用'WW'或'DD'觸發。

當我使用XNA時,有輸入狀態的選項,所以我可以存儲和比較按下的最後一個鍵與當前的鍵。

KeyboardState lastKeyboardState = KeyboardState; 

Unity是否有辦法做到這一點?我也曾在Unity論壇上提出過問題,但迄今爲止,沒有人會有答案。

回答

3

AFAIK存儲整個鍵盤狀態不支持Unity3D。另一方面,你不能在上次更新期間按下所有按鍵的列表,但你必須明確地檢查每個鍵(或軸,如果你正在使用它們)。

所以,你可以做的唯一的事情就是保存最後按下KeyCode

KeyCode lastKey; 
if (Input.GetKeyDown(KeyCode.D)) 
{ 
    //process input 
    if (lastKeyCode == ...) 
    { 
    } 
    lastKey = KeyCode.D; 
}