private void LoopPatrolling(FSMBase fsm) { // a - b - c - a - b - c -... if (Vector3.Distance(fsm.transform.position, fsm.wayPoints[index].position) < 0.1) { if (index == fsm.wayPoints.Length - 1) { index = (index + 1) % fsm.wayPoints.Length; } } fsm.MoveToTarget(fsm.wayPoints[index].position, 0, fsm.walkSpeed); }
private void PingPongPatrolling(FSMBase fsm) { //a b c b a b c b if (Vector3.Distance(fsm.transform.position, fsm.wayPoints[index].position) < 0.1) { if (index == fsm.wayPoints.Length - 1) { Array.Reverse(fsm.wayPoints); index++; } index = (index + 1) % fsm.wayPoints.Length; } fsm.MoveToTarget(fsm.wayPoints[index].position, 0, fsm.walkSpeed); }
private void OncePatrolling(FSMBase fsm) { //a - b - c if (Vector3.Distance(fsm.transform.position, fsm.wayPoints[index].position) < 0.1) { if (index == fsm.wayPoints.Length - 1) { fsm.isPatrolComplete = true; return; } index++; } fsm.MoveToTarget(fsm.wayPoints[index].position, 0, fsm.walkSpeed); }
public override void ActionState(FSMBase fsm) { base.ActionState(fsm); fsm.MoveToTarget(fsm.targetTF.position, fsm.chStatus.attackDistance, fsm.runSpeed); }