私は2.5Dゲームを開発しています。そのゲームでは、私のキャラクター(リジッドボディーコンポーネントが付属しています)がx軸とy軸に移動するだけです。だから私は、このコードスニペットを使用します。ユニティ3Dでz軸の体の位置を固定する方法
private void LockZAxis() {
Vector3 currentPosition = _rigidbody.position;
currentPosition.z = 0;
_rigidbody.position = currentPosition;
}
私は更新、FixedUpdateとLateUpdate両方の最後に、このLockZAxisメソッドを呼び出します。しかし、それは動作しません。私のキャラクターがしばらく先に進むと、そのzポジションは変更されます。
私のコードでは、RegidBodyの位置を操作する方法が2回あります。私は私のキャラクターが少し速く移動したいとき更新方法では、私がこれ持っているので、
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の位置を2回操作します。それは私のキャラクターがジャンプするとき、私はこれを使用します: _rigidbody.velocity = Vector3.up * jumpForceUp + transform.forward * jumpForceForward; 私のキャラクターが少し速く動くようにしたいときは、更新メソッドで、私はこれを持っています: Vector3 newPosition = transform.position + transform.forward * speed * Time.deltaTime; newPosition.z = 0; _rigidbody.MovePosition(newPosition); LockZAxis(); – congtrungvnit
答えをコードで更新してください。コメントセクションでコードを読むのは難しいです。 :) – Maakep