0
我正在製作2D空間射擊遊戲。我正在設置一個邊界,以便船舶不會離開屏幕。您可以通過傾斜手機來移動該船。我有一個shipController.cs附加到我的ship對象。這是我的固定更新功能:使用Mathf.Clamp統一綁定
public float xMin, xMax, yMin, yMax;
void FixedUpdate()
{
//tilt to move ship
transform.Translate(Input.acceleration.x * speed, Input.acceleration.y * speed, 0);
//create boundries
rigidbody2D.position = new Vector2(
Mathf.Clamp(rigidbody2D.position.x, xMin, xMax),
Mathf.Clamp(rigidbody2D.position.y, yMin, yMax)
);
}
最小值和最大值在unity inspector中定義。 如果您在PC上測試,此代碼效果很好。但是,當出口到手機,運動是非常緊張和毛刺。這艘船將進入邊界並開始跳躍。傾斜時的運動也不是很平滑。有沒有其他方法可以使這個更平滑?
這確定了船在移動時的順利問題,但一旦碰到邊界,它仍然是跳躍式的。我確實改變了它來更新。 – Doctor06 2014-10-31 20:08:21
沒有看到跳躍,我的下一個猜測是'transform.Translate'直接影響位置,但'rigidbody2D.position'被髮送到物理引擎,但更新的結果在下一幀中看到。嘗試將'rigidbody2D.position'改爲'transform.position'。我編輯了原始答案中的代碼以符合此。 – maZZZu 2014-10-31 21:13:35
這真是太神奇了。那工作完美。我不相信我沒有嘗試過。我想這就是你長時間盯着代碼所得到的結果。謝謝。 – Doctor06 2014-11-01 04:07:59