我正在开发一个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