private static void RotateTransformRotation(Transform trn, float angle, Vector3 axis) { Quaternion rot = trn.localRotation * Quaternion.AngleAxis(angle, axis); QuatUtil.Normalize(ref rot); trn.localRotation = rot; }
private static Quaternion EvaluateRotationSquad( ref Key <TransformPoint> k0, bool haveK0, ref Key <TransformPoint> k1, ref Key <TransformPoint> k2, ref Key <TransformPoint> k3, bool haveK3, float t) { Quaternion s0; if (!haveK0) { s0 = Quaternion.identity; } else { s0 = QuatUtil.SquadTangent(k0.value.rotation, k1.value.rotation, k2.value.rotation); } Quaternion s1; if (!haveK3) { s1 = Quaternion.identity; } else { s1 = QuatUtil.SquadTangent(k1.value.rotation, k2.value.rotation, k3.value.rotation); } return(QuatUtil.SquadInterpolate(t, k1.value.rotation, k2.value.rotation, s0, s1)); }
internal override void AddMove(Quaternion rot, Transform translateTrn, float translationFactor, Transform rotationTrn, float rotationFactor) { if (State) { Quaternion newRot = rotationTrn.localRotation * Quaternion.AngleAxis( BASE_ROTATE_SPEED * rotationFactor, axis); QuatUtil.Normalize(ref newRot); rotationTrn.localRotation = newRot; } }