41 lines
1.1 KiB
C#
Raw Normal View History

2024-08-17 14:12:46 +08:00
using UnityEngine;
namespace BehaviorTreeSlayer
{
public class MoveTo : ActionNode
{
[OutField]
public string ItemName;
[OutField]
public Vector3 Pos;
[OutField]
public float Speed;
GameObject obj;
float s;
[ShowMe("Time {0:F2}")]//You can use string to show infomation on nodeview
float t;
Vector3 startPos;
public override void Enter(object args)
{
BehaviorTree behaviorTree = args as BehaviorTree;
obj = behaviorTree[ItemName] as GameObject;
startPos = obj.transform.position;
s = Vector3.Distance(Pos, startPos) / Speed;
t = 0;
}
public override TaskResult Tick(double dt, object args = null)
{
t += (float)dt;
obj.transform.position = Vector3.Lerp(startPos, Pos, t / s);
if (t > s)
{
return TaskResult.OK;
}
else
{
return TaskResult.Running;
}
}
}
}