我有一個腳本,當我松開左右箭頭鍵時,它會移回 0,但它會捕捉到 0。這是我檢查陳述句是否正確的代碼:
if (!Input.GetKey(KeyCode.RightArrow) && !Input.GetKey(KeyCode.LeftArrow)) {
if (transform.eulerAngles.z < 0) {
rotation = speed * Time.deltaTime;
}
else{
rotation = 0;
}
}
這是旋轉游戲物件的腳本:
rotation = Mathf.Clamp(rotation, -30, 30);
transform.localRotation = Quaternion.Euler(0, 0, rotation);
我想讓它以 Float: speed 的速度移動并且不會捕捉到那個旋轉。
uj5u.com熱心網友回復:
啊,我想我現在得到了你想要的。
您可以通過使用來實作這一點Mathf.MoveTowards,以便在0沒有按下任何按鈕時將旋轉值平滑地移動到- 無論它是正還是負 - :
var left = Input.GetKey(KeyCode.LeftArrow);
var right = Input.GetKey(KeyCode.RightArrow);
if (left && !right)
{
rotation -= speed * Time.deltaTime;
}
else if (right && !left)
{
rotation = speed * Time.deltaTime;
}
else
{
rotation = Mathf.MoveTowards(rotation, 0, speed * Time.deltaTime);
}
rotation = Mathf.Clamp(zRotation, -30, 30);
transform.localRotation = Quaternion.Euler(0, 0, rotation);
注意:現在如果你同時按下兩個鍵,就好像你根本沒有按下任何鍵一樣。如果您不想要這種行為,您可以洗掉排除條件(!left和!right)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/336855.html
