我正在開發一個2.5D的遊戲。在那場比賽中,我希望我的角色(有Rigidbody組件連接到)在x和y軸上移動。所以我用這個代碼片段:如何鎖定在Z軸物理體的位置在Unity 3D
private void LockZAxis() {
Vector3 currentPosition = _rigidbody.position;
currentPosition.z = 0;
_rigidbody.position = currentPosition;
}
我呼籲在這兩個更新,FixedUpdate和LateUpdate結束這種LockZAxis方法。但它不起作用。當我的角色前進一段時間時,它的z位置仍然改變。
有關其他信息,在我的代碼,有兩次我操縱RegidBody的位置。第一種是當我的性格跳,那個時候我用這個:
jumpVelocityVector = Vector3.up * jumpForceUp + transform.forward * jumpForceForward;
_rigidbody.velocity = jumpVelocityVector;
當我想我的性格移動更快一點,所以在更新的方法,我有這樣的每一幀:
void Update() {
Vector3 newPosition = transform.position + transform.forward * speed * Time.deltaTime;
newPosition.z = 0;
_rigidbody.MovePosition (newPosition);
LockZAxis();
}
我很想擴展我的答案,但爲此我需要更多的代碼。請將代碼添加到操縱對象位置的位置,以及爲什麼在每幀設置位置時需要剛體。 – Maakep
對於我的代碼。有兩次我操縱RegidBody的位置。這時候,我的性格跳,那個時候我用這個: _rigidbody.velocity = Vector3.up * jumpForceUp + transform.forward * jumpForceForward; 當我想我的性格移動更快一點,所以在更新的方法,我有這樣的每一幀: 的Vector3在newPosition = transform.position + transform.forward *速度* Time.deltaTime; newPosition.z = 0; _rigidbody.MovePosition(newPosition); LockZAxis(); – congtrungvnit
請用代碼更新答案,在評論部分閱讀代碼非常困難。 :) – Maakep