38 lines
1.1 KiB
C#
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;
|
|
}
|
|
}
|