我是新來的Unity和剛體,我想我會通過嘗試製作3D Tron Light-cycle遊戲來學習。我做了使用圓柱體,球體和矩形的組合,我的球員的車輛,如下所示:統一 - 爲摩托車使用剛體 - 我該如何轉彎?
我用細長的球剛體,並用下面的代碼:
public float accel = 1.0f;
// Use this for initialization
void Start() {
cycleSphere = GetComponent<Rigidbody>();
}
void FixedUpdate() {
cycleSphere.velocity = Vector3.forward * accel;
}
使車輛向前移動。我不確定是否有更好的方法來做到這一點,但如果有,請說明一下。
我已將主攝像頭連接到車輛,並禁用X旋轉以防止它和攝像頭滾動。
現在我想通過按A和D按鈕來使其旋轉。與原來特隆燈光循環的90度轉向不同,我希望它像普通車輛一樣轉向。
所以,我想這一點:
void Update() {
if (Input.GetKey (KeyCode.A)) {
turning = true;
turnAnglePerFixedUpdate -= turnRateAngle;
} else if (Input.GetKey (KeyCode.D)) {
turning = true;
turnAnglePerFixedUpdate += turnRateAngle;
} else {
turning = false;
}
}
void FixedUpdate() {
float mag = cycleSphere.velocity.magnitude;
if (!turning) {
Quaternion quat = Quaternion.AngleAxis (turnAnglePerFixedUpdate, transform.up);// * transform.rotation;
cycleSphere.MoveRotation (quat);
}
cycleSphere.velocity = Vector3.forward * accel;
}
雖然上面的代碼做旋轉車輛,它仍然在移動的最後一個方向是在 - 它的行爲更像是一個坦克炮塔。更糟糕的是,按A或D太多會導致它在所需的方向旋轉,並在一段時間後,堅果,旋轉這種方式,並帶着相機。
我做了什麼錯,我該如何解決?
嗯,有趣。自那時起,我對代碼做了一些修改,並且確實讓它工作,但我已經接受了您的建議並將getKey替換爲Input。這段代碼如何轉變? –
該代碼與從Input.GetAxis(「horizontal」)檢索到的值相關,後者與「2 * forwardForce」結合使用。意思是它將繼續向前移動,但每當有一個水平輸入時,它就會修改力(使它有點彎曲)。 –