boredom. / Assets / Scripts / MenuPlayer.cs
MenuPlayer.cs
Raw
using DG.Tweening;
using UnityEngine;

public class MenuPlayer : MonoBehaviour {

    [Header("Movement")]
    [SerializeField] private Transform targetPoint;
    [SerializeField] private float delay;
    [SerializeField] private float moveDuration;
    [SerializeField] private Vector3 playerStart;
    [SerializeField] private Vector3 playerTarget;
    [SerializeField] private float playerDuration;
    private Vector3 startPoint;
    private bool toTarget;
    private Tweener tweener;
    private bool initialized;
    private bool lastInitialized;

    private void Start() {

        transform.position = playerStart;
        transform.DOMove(playerTarget, playerDuration).OnComplete(() => {

            startPoint = transform.position;
            toTarget = true;

            initialized = true;

        });
    }

    private void FixedUpdate() {

        if ((tweener != null && tweener.IsActive()) || !initialized) {

            lastInitialized = initialized;
            return;

        }

        if (lastInitialized == initialized) // prevents flip on first time
            transform.Rotate(0f, 180f, 0f);

        tweener = transform.DOMove(toTarget ? targetPoint.position : startPoint, moveDuration).SetDelay(delay).OnComplete(() => {

            toTarget = !toTarget;

        }).SetEase(Ease.Linear);
    }
}