예제 #1
0
    // -------------------------------------------------------------------------------

    public void ResetRotation(System.Action onCompleteCallback = null)
    {
        var targetrotation = Vector3.zero;
        var rotationDelta  = 0.0f;

        if (IsUpsideDown)
        {
            targetrotation   = transform.eulerAngles;
            targetrotation.y = 180.0f;

            rotationDelta = Mathf.Abs(targetrotation.y - transform.eulerAngles.y);
        }
        else
        {
            rotationDelta = Mathf.Abs(targetrotation.y - transform.eulerAngles.y) +
                            Mathf.Abs(targetrotation.x - transform.eulerAngles.x) +
                            Mathf.Abs(targetrotation.z - transform.eulerAngles.z);
        }

        var duration = (RotationTweenDurationCurve.keys.Length > 0) ? RotationTweenDurationCurve.Evaluate(rotationDelta) : 2.0f;

        Rotatable.PlaySFX(true);

        LeanTween.rotate(gameObject, targetrotation, duration).setEaseInOutBack().setOnComplete(() =>
        {
            Rotatable.StopSFX();
            if (onCompleteCallback != null)
            {
                onCompleteCallback.Invoke();
            }
        });
    }