39 lines
1.0 KiB
C#
39 lines
1.0 KiB
C#
using UnityEngine;
|
|
using System.Collections;
|
|
|
|
[AddComponentMenu("Playground/Movement/Follow Target")]
|
|
[RequireComponent(typeof(Rigidbody2D))]
|
|
public class FollowTarget : Physics2DObject
|
|
{
|
|
// This is the target the object is going to move towards
|
|
public Transform target;
|
|
|
|
[Header("Movement")]
|
|
// Speed used to move towards the target
|
|
public float speed = 1f;
|
|
|
|
// Used to decide if the object will look at the target while pursuing it
|
|
public bool lookAtTarget = false;
|
|
|
|
// The direction that will face the target
|
|
public Enums.Directions useSide = Enums.Directions.Up;
|
|
|
|
// FixedUpdate is called once per frame
|
|
void FixedUpdate ()
|
|
{
|
|
//do nothing if the target hasn't been assigned or it was detroyed for some reason
|
|
if(target == null)
|
|
return;
|
|
|
|
//look towards the target
|
|
if(lookAtTarget)
|
|
{
|
|
Utils.SetAxisTowards(useSide, transform, target.position - transform.position);
|
|
}
|
|
|
|
//Move towards the target
|
|
rigidbody2D.MovePosition(Vector2.Lerp(transform.position, target.position, Time.fixedDeltaTime * speed));
|
|
|
|
}
|
|
}
|