top of page

指定した位置まで移動させる(Vector3)

    [SerializeField, Range(0, 10)]
    //何秒後に到達するか
    float time = 1;

    [SerializeField]
    //どこのポジションに移動するか
    Vector3    endPosition;

    private float startTime;
    private Vector3 startPosition;

    void OnEnable ()
    {
        if (time <= 0) {
            transform.position = endPosition;
            enabled = false;
            return;
        }

        startTime = Time.timeSinceLevelLoad;
        startPosition = transform.position;
    }

    void Update ()
    {
        var diff = Time.timeSinceLevelLoad - startTime;
        if (diff > time) {
            transform.position = endPosition;
            enabled = false;
        }

        var rate = diff / time;

        transform.position = Vector3.Lerp (startPosition, endPosition, rate);
    }

    //Sceneで線を可視化
    void OnDrawGizmosSelected ()
    {
        #if UNITY_EDITOR

        if( !UnityEditor.EditorApplication.isPlaying || enabled == false ){
            startPosition = transform.position;
        }

        UnityEditor.Handles.Label(endPosition, endPosition.ToString());
        UnityEditor.Handles.Label(startPosition, startPosition.ToString());
        #endif
        Gizmos.DrawSphere (endPosition, 0.1f);
        Gizmos.DrawSphere (startPosition, 0.1f);

        Gizmos.DrawLine (startPosition, endPosition);
    }

bottom of page