如何计算旋转统一3D C#的速度



对象也会快速移动,但是当它与另一个gameObject碰撞时,它不会施加速度/力,而速度/力已旋转)有什么办法可以计算其最近旋转的速度/力,以便我可以在碰撞时将该速度/力应用于另一个对象?

注意:我不完全确定我需要的是速度还是力量

float rot = float.Parse (sp.ReadLine());
transform.eulerAngles = new Vector3 (0, 90, rot); 

注意:由于对象的设计是如何设计的,必须默认以90度旋转。基本上,我在做什么是从陀螺仪中接收信息并将其放在对象旋转中。

传感器以浮点的形式给出-90至90的值,当它旋转到左侧时,它给出了-90至0的值,当旋转向右时,它给出了0到90的值。此值应用于以图形方式旋转对象,并在另一个gameObject碰撞时旋转旋转的速度(如果它的移动从-90快速移动到-20,例如,它应该施加的力比从 - 缓慢移动的情况下施加更多的力90至-50至-20)

试图引起对象之间可信的物理互动时,您永远不想直接操纵transform。相反,您应该利用可用的各种方法来物理影响附件的Rigidbody

在这种情况下,要应用旋转,您将要使用Rigidbody.AddTorque()。这是您如何使用它的想法:

// Probably get this value in Start() and save it for later
Rigidbody rb = GetComponent<Rigidbody>();
float rot = float.Parse (sp.ReadLine());
// transform.forward is the unit vector corresponding to the local z-axis of the object
Vector3 rotationAxis = transform.forward * rot;
rb.AddTorque(rotationAxis);

希望这会有所帮助!让我知道您是否有任何疑问。

最新更新