CapersProject/Assets/02.Scripts/BlueWater/BehaviorTree/Action/Move.cs
2025-02-10 11:13:46 +09:00

50 lines
1.2 KiB
C#

using System;
using BehaviorDesigner.Runtime;
using BehaviorDesigner.Runtime.Tasks;
using DDD.Enemies;
using UnityEngine;
using Action = BehaviorDesigner.Runtime.Tasks.Action;
namespace DDD.BehaviorTrees.Actions
{
[TaskCategory("Custom")]
[Serializable]
public class Move : Action
{
[field: SerializeField]
public bool UseMovePosition { get; set; }
[field: SerializeField]
public SharedVector3 MovePosition { get; set; }
[field: SerializeField]
public SharedCollider Target { get; set; }
private AiMovement _aiMovement;
public override void OnAwake()
{
_aiMovement = transform.GetComponent<AiMovement>();
}
public override void OnStart()
{
if (UseMovePosition)
{
_aiMovement.Move(MovePosition.Value);
}
else
{
_aiMovement.MoveTarget(Target.Value);
}
}
public override TaskStatus OnUpdate()
{
if (!_aiMovement.HasReachedDestination()) return TaskStatus.Running;
_aiMovement.StopMove();
return TaskStatus.Success;
}
}
}