Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
general [2020/04/10 18:32] paul [Rotations] |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== General ====== | ||
- | |||
- | ===== Rotations ===== | ||
- | Unity uses 3 rotation systems. [[https:// | ||
- | |||
- | - Euler Angers - rotation about x, y, z axis | ||
- | - Angle Axis - A normalized Vector3 representing the axis about which to rotate by float angle amount | ||
- | - Quaternions - Angle Axis rotation representation that have been scaled to improve performance. | ||
- | |||
- | |||
- | ==== Calculations ==== | ||
- | <code c#> | ||
- | |||
- | // Get the direction to a camera | ||
- | Vector3 directionToCamera = Camera.main.transform.position - transform.position; | ||
- | |||
- | transform.rotation = Quaternion.FromToRotation(Vector3.back, | ||
- | </ | ||
- | ==== Quaternions ==== | ||
- | |||
- | They are in the form of '' | ||
- | |||
- | === Creating Quaternions === | ||
- | <code c#> | ||
- | // This has to be normalized. We generally never use this | ||
- | Quaternion rotation = new Quaternion(0, | ||
- | |||
- | // You usually create a rotation in euler and then convert to quaternion. | ||
- | |||
- | ==== Convertions ==== | ||
- | <code c#> | ||
- | // Convert from Quaternion to Euler: | ||
- | Vector3 inEuler = quaternionRotation.eulerAngles; | ||
- | |||
- | // Convert Euler to Quaternion | ||
- | Quaternion inQuaternion = Quaternion.Euler(inEuler); | ||
- | |||
- | // To Angle-Axis | ||
- | Quaternion randomQuaternion = Random.rotation; | ||
- | float angle; | ||
- | Vector3 axis; | ||
- | |||
- | randomQuaternion.ToAngleAxis(out angle, out axis); | ||
- | |||
- | // And back | ||
- | Quaternion rotation = Quaternion.AngleAxis(angle, | ||
- | </ | ||