/// <summary> /// Turns the selected Rotation toward a given point using the provided interpolation settings /// </summary> /// <param name="position">end desired position to LookAt</param> /// <param name="rotationType">Rotation (Yaw/Pitch/Roll) which will turn</param> /// <param name="interpolateType">Rotation interpolation (Lerp/Slerp/RotateTowards/etc.) type used</param> /// <param name="interpolateRate">Rate of the interpolation (desired ranges based on selected interpolation type)</param> /// <param name="up">Up direction to maintain (null will try to maintain the transform's current up direction)</param> public void TurnToward(Vector3 position, Rotation rotationType, MathExtensions.QuaternionInterpolationType interpolateType, float interpolateRate, Vector3?up = null) { Transform trans = GetTransform(rotationType); Quaternion desiredFacing = GetFacingDirectionOnPlane(rotationType, position, up); trans.rotation = MathExtensions.Interpolate(interpolateType, trans.rotation, desiredFacing, interpolateRate); }
public void TurnToward(Vector3 position, Rotation priority1, Rotation priority2, Rotation?priority3, MathExtensions.QuaternionInterpolationType interpolateType, float interpolateRate, Vector3?up = null) { if (priority1 == priority2 || priority1 == priority3 || priority2 == priority3) { Debug.LogError("Priorities must be unique."); return; } TurnToward(position, priority1, interpolateType, interpolateRate, up); TurnToward(position, priority2, interpolateType, interpolateRate, up); if (priority3 != null) { TurnToward(position, priority3.Value, interpolateType, interpolateRate, up); } }