Files
MetalGear2D.Unity/Assets/Scripts/AI/Jobs/AiPatrol.cs
T
2025-05-13 05:19:58 +03:00

38 lines
1.1 KiB
C#

using UnityEngine;
using System.Collections;
public class AiPatrol : AiBehavior {
public AiWaypoint[] patrolPoints;
private int _targetPoint;
private GameObject targetObject;
private HumanController controller;
protected override void OnBegin(AiBlackboard blackboard) {
base.OnBegin(blackboard);
//_targetPoint = 0;
blackboard.GetValue("gameobject", out targetObject);
controller = targetObject.GetComponent<HumanController>();
}
private void NextPoint() {
_targetPoint = (_targetPoint + 1)%patrolPoints.Length;
}
protected override BehaviorStatus OnExecute(AiBlackboard blackboard) {
var point = patrolPoints[_targetPoint];
var dir = (Vector2) point.transform.position - (Vector2) controller.transform.position;
if (controller.GetComponent<Health>().Dead) {
return BehaviorStatus.Success;
}
if (Mathf.Abs(dir.x) < 0.1f) {
NextPoint();
} else {
controller.UpdateMovement(Mathf.Sign(dir.x) * controller.maxWalkSpeed);
}
return BehaviorStatus.Running;
}
}