IndieGame/client/Assets/ParadoxNotion/NodeCanvas/Tasks/Actions/Movement/Direct/MoveTowards.cs

31 lines
950 B
C#
Raw Normal View History

2024-10-11 10:12:15 +08:00
using NodeCanvas.Framework;
using ParadoxNotion.Design;
using UnityEngine;
namespace NodeCanvas.Tasks.Actions
{
[Category("Movement/Direct")]
[Description("Moves the agent towards to target per frame without pathfinding")]
public class MoveTowards : ActionTask<Transform>
{
[RequiredField]
public BBParameter<GameObject> target;
public BBParameter<float> speed = 2;
public BBParameter<float> stopDistance = 0.1f;
public bool waitActionFinish;
protected override void OnUpdate() {
if ( ( agent.position - target.value.transform.position ).magnitude <= stopDistance.value ) {
EndAction();
return;
}
agent.position = Vector3.MoveTowards(agent.position, target.value.transform.position, speed.value * Time.deltaTime);
if ( !waitActionFinish ) {
EndAction();
}
}
}
}