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(); } 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().Dead) { return BehaviorStatus.Success; } if (Mathf.Abs(dir.x) < 0.1f) { NextPoint(); } else { controller.UpdateMovement(Mathf.Sign(dir.x) * controller.maxWalkSpeed); } return BehaviorStatus.Running; } }