protected Transform GetNextTarget() { if (PatrolState == PatrolStates.Chasing && currentTarget == null) { PatrolState = PatrolStates.ReturningToPatrol; } switch (PatrolState) { case PatrolStates.Chasing: return(currentTarget); default: if (waypoints.Count == 0) { return(null); } currentTargetIndex += 1; if (currentTargetIndex >= waypoints.Count) { currentTargetIndex = 0; } return(waypoints[currentTargetIndex]); } }
// Start is called before the first frame update void Start() { fsm = new FSM_System_MonsterS(); FSM_MonsterS patrol = new PatrolStates(fsm, 1, this.gameObject); fsm.AddState(patrol); patrol.Addtransition(Transition.Inattackrange, Monster_State.Attack); patrol.Addtransition(Transition.Attacked, Monster_State.Hurt); FSM_MonsterS attack = new AttackStates(fsm, 1, this.gameObject); fsm.AddState(attack); attack.Addtransition(Transition.Searchhero, Monster_State.Trace); attack.Addtransition(Transition.Attacked, Monster_State.Hurt); FSM_MonsterS hurt = new HurtStates(fsm, 1, this.gameObject); fsm.AddState(hurt); hurt.Addtransition(Transition.Searchhero, Monster_State.Trace); hurt.Addtransition(Transition.Outoflife, Monster_State.Die); FSM_MonsterS die = new DieStates(fsm, 1, this.gameObject); fsm.AddState(die); }
private void Awake() { _rb = GetComponent <Rigidbody2D>(); _col = GetComponent <CircleCollider2D>(); _ani = GetComponent <Animator>(); _renderer = GetComponent <SpriteRenderer>(); PatrolState = PatrolStates.Patrolling; }
public void TargetLost(Collider2D other) { if (IsInvalidTarget(other)) { return; } currentTarget = null; PatrolState = PatrolStates.ReturningToPatrol; }
private void TargetAcquired(GameObject target) { PatrolState = PatrolStates.Chasing; currentTarget = target.transform; }