negitamago
12/26/2018 - 3:06 PM

RigidbodyMoveTowards

Rigidbodyを持つオブジェクトをターゲットの位置に向かわせる

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// Rigidbodyを持つオブジェクトをターゲットの位置に向かわせる
/// </summary>
public class RigidbodyMoveTowards : MonoBehaviour
{
    [SerializeField] Transform target;
    [SerializeField] float speed;
    [SerializeField] float goalDistance;
    [SerializeField] Rigidbody _rigidbody;

    private void FixedUpdate ()
    {
        var newPos = Vector3.MoveTowards(_rigidbody.position, target.position, speed * Time.deltaTime);
        _rigidbody.MovePosition ( newPos );

        var sqrDistance = Vector3.SqrMagnitude ( _rigidbody.position - target.position );
        if ( sqrDistance < Mathf.Pow ( goalDistance, 2 ) )
        {
            Debug.Log ( "Arrived" );
            this.enabled = false;
        }
    }
}