public Quaternion getQuaternionAtPercent(float percentage, /*Vector3 startPosition, Vector3 endPosition,*/ Vector3?startVector = null, Vector3?endVector = null) { if (isLookFollow()) { obj.LookAt(startTarget); return(obj.rotation); } Vector3 _temp = obj.position; if (isSetStartPosition) { obj.position = (Vector3)startPosition; } obj.LookAt(startVector ?? startTarget.position); Vector3 eStart = obj.eulerAngles; if (isSetEndPosition) { obj.position = (Vector3)endPosition; } obj.LookAt(endVector ?? endTarget.position); Vector3 eEnd = obj.eulerAngles; obj.position = _temp; eEnd = new Vector3(AMTween.clerp(eStart.x, eEnd.x, 1), AMTween.clerp(eStart.y, eEnd.y, 1), AMTween.clerp(eStart.z, eEnd.z, 1)); Vector3 eCurrent = new Vector3(); AMTween.EasingFunction ease; AnimationCurve curve = null; if (hasCustomEase()) { curve = easeCurve; ease = AMTween.customEase; } else { ease = AMTween.GetEasingFunction((AMTween.EaseType)easeType); } eCurrent.x = ease(eStart.x, eEnd.x, percentage, curve); eCurrent.y = ease(eStart.y, eEnd.y, percentage, curve); eCurrent.z = ease(eStart.z, eEnd.z, percentage, curve); return(Quaternion.Euler(eCurrent)); }