public void TestFunctions() { Quaternion2D q = new Quaternion2D(); q.SetIdentity(); Assert.AreEqual(q, new Quaternion2D(0, 1)); q = new Quaternion2D(2, 4); float l = q.length; q.Normalize(); Assert.AreEqual(q, new Quaternion2D(2 / l, 4 / l)); q = new Quaternion2D(2, 4); q.Inverse(); Assert.AreEqual(q, new Quaternion2D(-2, 4)); q.SetIdentity(); q.angle = 0.927295268f; Assert.AreEqual(q, Quaternion2D.Normalize(new Quaternion2D(2, 4))); q.SetIdentity(); q.SetFromTo(new Vector2(-1, -3), new Vector2(2, 4)); Assert.AreEqual(q, new Quaternion2D(-0.9974842f, 0.07088902f)); q = Quaternion2D.LookRotation(new Vector2(1, 3)); Assert.AreEqual(q, new Quaternion2D(0.1601822f, 0.9870874f)); }
private void Update() { switch (state) { case State.Launched: ProcessLaunching(Time.deltaTime); break; case State.Attached: ProcessUnitPulling(Time.deltaTime); break; case State.Retracting: ProcesRetracting(Time.deltaTime); break; } if (state != State.Retracted) { lineRenderer.SetPosition(0, origin.position); lineRenderer.SetPosition(1, transform.position); transform.rotation = Quaternion2D.LookRotation(transform.position - origin.position); } }
public static void AlignWithRay(this Transform transform, Ray ray) { transform.SetPositionAndRotation(ray.origin, Quaternion2D.LookRotation(ray.direction)); }