A forgómozgás fizikája megfeleltethető a lineárissal. Ezt a A mechanika alapjai leckében tárgyaltuk. Ez a párhuzam a Unity fizikában is megfigyelhető.
A legnagyobb különbség, hogy a Rigidbody és Rigidbody2D nem vektorban tárolja a forgási szögsebességét, hanem 3D-ben egy Quaternion-ban és 2D-ben egy float számban, hisz ezutóbbi esetben csak egy forgástengely van, a Z.
Mind 2 és 3 dimenzióban a forgási sebesség fokban értendő.
Módosíthatjuk a Rigidbody rotation tulajdonságát manuálisan is hasonlóan a velocity-hez.
3D esetén a legcélszerűbb a Quaternion-t Euler szögekbe alakítani. Általában így könnyebb vele dolgozni.
Emellett használható az AddTorque függvény is az AddForce-hoz hasonlóan.
3D esetén az AddTorque Euler szögeket vár Vector3-ban vagy 3 darab float-ban.
2D-ben csak egy darab float szöget.
Minden esetben az AddForce-hoz hasonlóan adhatunk egy ForceMode típusú opcionális paramétert, ami hasonlóan működik, mint a lineáris esetben. Sajnos ehhez fejből kell tudni a forgómozgás fizikai mennyiségeinek lineáris fizikában használt megfelelőit:
Függ a tömegtől | Független a tömegtől | |
Pillanat szerű
| Szögsebesség változás
ForceMode.VelocityCahnge | Perdület változás
ForceMode.Impulse |
Folyamatos | Szöggyorsulás
ForceMode.Acceleration | Forgatónyomaték
ForceMode.Force |
Vector3 value = new Vector3(0,90,270); // Fokban
Rigidbody rigidbody = GetComponent<Rigidbody>();
rigidbody.AddTorque(value, ForceMode.VelocityCahnge); // Szögsebesség változás
rigidbody.AddTorque(value, ForceMode.Acceleration); // Szöggyorsulás
rigidbody.AddTorque(value, ForceMode.Impulse); // Perdület változás
rigidbody.AddTorque(value, ForceMode.Force); // Forgatónyomaték