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]);
            }
        }
示例#2
0
    // 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;
 }