簡體   English   中英

C#輸入鍵,一鍵單擊,因此不會響應按下該鍵

[英]C# Input Key, one click, So it doesn't respond to being held down

所以我正在為角色創建一個動作腳本,我希望他每按下一個按鈕就移動1個正方形,我遇到的問題是,如果我按住按鈕,他會不斷移動我不想移動的位置,例如,如果按住不放,我仍然只希望他移動1個正方形。 我已經嘗試使用

if (Input.GetKeyDown(KeyCode.W) && WButton == true)
{
    transform.Translate(0, 0, 1);
    WButton = false;
}
if (Input.GetKeyUp(KeyCode.W))
{
    WButton = true;
}

它的作用是,當按下W按鈕時將其禁用,而當您抬起手指時將其啟用。 這確實滿足了我的要求,但它根本無法很好地工作,例如絕對不夠出色,無法在游戲中使用,所以還有其他方法可以實現這一目標。 感謝您提供的所有幫助,我們非常感謝

通過您給出的示例,我假設您正在使用Unity3D,對嗎? (如果是這樣,請考慮將unity3d標記添加到您的問題中,以使人們對您的問題有更好的了解,並在StackOverflow的相應部分中找到您的問題)。

您的代碼示例似乎正確。 可能發生的問題是,您只能從Input Update()方法中讀取輸入值,如Input類文檔中所述

如果要從Update()方法內部以外的任何位置調用Input.GetKeyDown()和/或Input.GetKeyUp() ,則這些方法將返回不一致/錯誤的值。

Input.GetKeyDown僅在您第一次按下按鈕時調用; 因此,您無需使用bool WButton

請參閱Unity3D文檔-Input.GetKeyDown“您需要從Update函數調用此函數,因為狀態在每一幀都會重置。在用戶釋放鍵並再次按下之前,它不會返回true。”

使用此代碼:

void Update()
{
    if (Input.GetKeyDown(KeyCode.W))
        transform.Translate(0, 0, 1);
}

希望對您有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM