2016-11-18 3 views
0

Dieser Codeabschnitt soll eine Linie zeichnen, die den Wenderadius eines Objekts mit seiner Geschwindigkeit und Winkelgeschwindigkeit darstellt. Aus irgendeinem Grund ist aber angesichts der Radius viel länger, dass es sein soll ist:Drehen Radius Wert lang

AngularVel = m_Rigidbody.angularVelocity.y; 
Vel = m_Rigidbody.velocity.magnitude; 
//Vel = transform.InverseTransformDirection(m_Rigidbody.velocity).z; same result 
float radius = Vel/(AngularVel * Mathf.Deg2Rad); 
Quaternion RadiusDirQuat = Quaternion.AngleAxis(m_Rigidbody.rotation.eulerAngles.y + 90, Vector3.up); 
Vector3 radiusDir = RadiusDirQuat * Vector3.forward; 
Debug.DrawRay(m_Rigidbody.position + Vector3.up, radiusDir * radius, new Color(1, 0, 0.5f, 1)); 

ich diesen Artikel als Referenz bin mit: https://revisionmaths.com/advanced-level-maths-revision/mechanics/motion-circle

+1

Ich denke du willst 'AngularVel = m_Rigidbody.angularVelocity.magnitude', nein? – Quantic

+0

Vielleicht hast du irgendwo im float radius = ... eine 2 * Pi vergessen. Ist der Radius etwa 6,28 mal so groß wie das Original? angularVelocity.y sollte Drehungen pro Sekunde geben, die (1/(2 * pi)) mal die Winkelgeschwindigkeit sind. Wenn es 2 Umdrehungen pro Sekunde hat, ist es 4 * Pi Radiant pro Sekunde. –

+0

@Quantic Ich ersetzte es mit dem, aber bekam das gleiche Ergebnis. –

Antwort

1

Nach this, Unity Winkelgeschwindigkeit ist bereits in Radiant pro Sekunde multiplizieren Sie mit Mathf.Deg2Rad, also entfernen Sie das einfach und machen Sie die Zeile lesen: float radius = Vel/AngularVel.