所以问题是:我有一个让刚体旋转的传感器,问题是我无法计算它旋转的速度(如果传感器快速移动,物体也会快速移动但是当它移动时与另一个游戏对象发生碰撞时,它将不会应用已旋转的速度/力量 有什么方法可以计算它最近旋转的速度/力量,以便我可以在碰撞时将速度/力施加到另一个物体上吗?
注意:我不完全确定我需要的是速度还是力量
float rot = float.Parse (sp.ReadLine());
transform.eulerAngles = new Vector3 (0, 90, rot);
注意:由于对象的设计方式,默认情况下必须旋转90度。基本上我正在做的是从陀螺仪接收信息并将其置于物体旋转中。
传感器以Float的形式给出-90到90的值,当它向左旋转时,它给出从-90到0的值,当向右旋转时,它给出从0到90的值。这个值应该是用于以图形方式旋转对象,并且当它与另一个游戏对象发生碰撞时它也会旋转它的速度(如果它从-90快速移动到-20,例如它应该施加的力比从它缓慢移动时施加的力 - 90至-50至-20)
答案 0 :(得分:0)
当试图在对象之间进行可信的物理交互时,您永远不想直接操纵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);
希望这有帮助!如果您有任何问题,请告诉我。