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; } } } }