*
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user