繁体   English   中英

如何计算旋转单位3D C#的速度

[英]How can I calculate the speed of a rotation unity 3d c#

所以问题是:我有一个使刚体旋转的传感器,问题是我无法计算其旋转的速度(如果传感器快速移动,则对象也会快速移动,但是当它与另一个碰撞时它不会应用已旋转的速度/力的游戏对象)有什么方法可以计算它最近旋转的速度/力,以便在碰撞时可以将速度/力应用于另一个对象?

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

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)

当试图引起对象之间可信的物理交互时,您永远不想直接操纵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);

希望这可以帮助! 如果您有任何疑问,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM