我有一個腳本讓玩家打開和關閉門,但是當我按下按鈕關閉門時,它會關閉然後再次打開。我懷疑這是因爲lerp不停止或什麼。我怎樣才能解決這個問題?怎麼了? 謝謝!C#編程邏輯(Unity3d腳本)
Door Script:
using UnityEngine;
using System.Collections;
public class DoorHandler : MonoBehaviour {
public bool isOpen = false;
public float maxOpenDistance = 10f, doorCloseTime = 3f;
void Update() {
if (Input.GetKeyDown (KeyCode.F)) {
if (Vector3.Distance (GameObject.FindGameObjectWithTag ("Player").transform.position, this.gameObject.transform.position) <= maxOpenDistance) {
isOpen = !isOpen;
}
if (isOpen)
gameObject.transform.rotation = Quaternion.Lerp (Quaternion.Euler (transform.rotation.x, 0, transform.rotation.z),
Quaternion.Euler (transform.rotation.x, 90, transform.rotation.z), doorCloseTime);
} else {
gameObject.transform.rotation = Quaternion.Lerp (Quaternion.Euler (transform.rotation.x, 90, transform.rotation.z),
Quaternion.Euler (transform.rotation.x, 0, transform.rotation.z), doorCloseTime);
}
}
}
我對團結並不太熟悉,但我可以想象它是由於遊戲循環沒有意識到按鍵和按鍵的區別,所以這意味着您不斷地改變其打開狀態,我是肯定團結有一定的發現這種方式.. – Sayse
@Sayse你是對的,團結有一種處理方式,但在提供的代碼中,它已經使用正確的方式,因爲Input.GetKeyDown()只適用於第一次更新自按鍵被按下 – grexter89
旋轉是否實際上是lerp或是門打開和關閉? – grexter89