Unity AddRelativeForce锁定轴

问题描述 投票:0回答:1

我有一台自上而下的摄像机,它的旋转角度可变。我正在尝试实现平移手势,以使相机在世界空间的x,z平面内移动。我正在使用AddRelativeForce,它的效果很好,但具有不希望的缩放副作用。我通过加力(velocity.y = 0)后更改速度来解决此问题。这可以正常工作,但是分两步进行比较有点脏。它还需要一些测量以兑现来自其他来源的y速度。

所以我的问题是:这可以简化/改进吗?

Rigidbody rb = GetComponent<Rigidbody>();
rb.AddRelativeForce(new Vector3(-panGesture.DeltaX, 0, -panGesture.DeltaY) * Speed, ForceMode.Impulse);
rb.velocity = new Vector3(rb.velocity.x, 0, rb.velocity.z);
unity3d
1个回答
0
投票

我将使用rigidbody.AddForce而不是rigidbody.AddRelativeForce并使用transform.TransformDirection进行从相对世界的转换:

Rigidbody rb = GetComponent<Rigidbody>();
Vector3 relativeForceVec = new Vector3(-panGesture.DeltaX, 0f, -panGesture.DeltaY) * Speed;
Vector3 worldForceVec = transform.TransformDirection(relativeForceVec);
rb.AddForce(worldForceVec * new Vector3(1f, 0f, 1f), ForceMode.Impulse);
© www.soinside.com 2019 - 2024. All rights reserved.