簡體   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