Beispiel #1
0
    protected override void InitStateMachine()
    {
        m_FSM      = new FSMSystem();
        m_FSM.attr = attr;

        idleState  = new EnemyIdleState();
        moveState  = new EnemyMoveState();
        fightState = new EnemyFightState();
        deathState = new EnemyDeathState();



        m_FSM.AddState(idleState, this);
        idleState.AddTransition(Transition.IsMove, StateID.Move);
        idleState.AddTransition(Transition.IsFight, StateID.Fight);


        m_FSM.AddState(moveState, this);
        moveState.AddTransition(Transition.IsIdle, StateID.Idle);
        moveState.AddTransition(Transition.IsFight, StateID.Fight);


        m_FSM.AddState(fightState, this);
        fightState.AddTransition(Transition.IsIdle, StateID.Idle);

        m_FSM.AddState(deathState, this);

        //初始状态为Idle
        m_FSM.SetCurrentState(idleState);
    }
    override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        player       = GameObject.FindGameObjectWithTag("Player").transform;
        en_parent_rb = animator.transform.parent.GetComponent <Rigidbody2D>();
        ems          = new EnemyMoveState();

        en_atk = animator.GetComponent <CheckTargetToDamage_MeleeOverlapCircle>();
        //GetDamage dmg = GameObject.FindGameObjectWithTag("Player").GetComponent<GetDamage>();
    }
Beispiel #3
0
 private void Awake()
 {
     //Initialise
     StateMachine = new EnemyStateMachine();
     IdleState    = new EnemyIdleState(this, StateMachine, enemyData, "idle");
     MoveState    = new EnemyMoveState(this, StateMachine, enemyData, "move");
     AttackState  = new EnemyAttackState(this, StateMachine, enemyData, "inAttack");
     DeathState   = new EnemyDeathState(this, StateMachine, enemyData, "isDead");
 }
Beispiel #4
0
    private void Init()
    {
        if (!this.isInit)
        {
            this.isInit        = true;
            this.currentTarget = GameManager.Instance.GetPlayerTransform();
            this.moveState     = this.gameObject.AddComponent <EnemyMoveState>();
            this.attackState   = this.gameObject.AddComponent <EnemyAttackState>();
            this.ownTransform  = this.gameObject.transform;

            this.moveState.ExitState();
            this.attackState.ExitState();
        }
    }
Beispiel #5
0
 public void UpdateMoveState(int groundingTriggerCount, int climbingTriggerCount)
 {
     if (0 < climbingTriggerCount)
     {
         state = EnemyMoveState.Climbing;
     }
     else if (0 < groundingTriggerCount)
     {
         state = EnemyMoveState.Grounding;
     }
     else
     {
         state = EnemyMoveState.Flying;
     }
 }
Beispiel #6
0
    public static void Randomise()
    {
        // Debug.Log("Randomising enemy class...");
        // Randomise the enemy's Class
        int randomNum = Random.Range(0, 3);

        switch (randomNum)
        {
        case 0:
            // Debug.Log("Setting enemy class to [Fighter]");
            enemyClass = EnemyClass.EnemyFighter;
            break;

        case 1:
            // Debug.Log("Setting enemy class to [Ranged]");
            enemyClass = EnemyClass.EnemyRanged;
            break;

        case 2:
            // Debug.Log("Setting enemy class to [Mage]");
            enemyClass = EnemyClass.EnemyMage;
            break;

        default:
            // Something went wrong
            // Debug.Log("Could not set an enemy class");
            // Debug.Log("Setting enemy class to [None]");
            enemyClass = EnemyClass.None;
            break;
        }

        // Randomise the int again
        randomNum = Random.Range(0, 3);

        // Debug.Log("Randomising enemy move state...");
        // Randomise the enemy's movement state
        switch (randomNum)
        {
        case 0:
            // Debug.Log("Setting enemy move state to [Stationary]");
            enemyMoveState = EnemyMoveState.Stationary;
            break;

        case 1:
            // Debug.Log("Setting enemy move state to [Patrol]");
            enemyMoveState = EnemyMoveState.Patrol;
            break;

        case 2:
            // Debug.Log("Setting enemy move state to [Wander]");
            enemyMoveState = EnemyMoveState.Wander;
            break;

        default:
            // Something went wrong
            // Debug.Log("Could not set an enemy move state");
            // Debug.Log("Setting enemy move state to [None]");
            enemyMoveState = EnemyMoveState.None;
            break;
        }
    }
Beispiel #7
0
 private void SetEnemyMoveState(EnemyMoveState i_enemyMoveState) => m_enemyMoveState = i_enemyMoveState;