对象也会快速移动,但是当它与另一个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);
希望这会有所帮助!让我知道您是否有任何疑问。