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>(); }
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"); }
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(); } }
public void UpdateMoveState(int groundingTriggerCount, int climbingTriggerCount) { if (0 < climbingTriggerCount) { state = EnemyMoveState.Climbing; } else if (0 < groundingTriggerCount) { state = EnemyMoveState.Grounding; } else { state = EnemyMoveState.Flying; } }
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; } }
private void SetEnemyMoveState(EnemyMoveState i_enemyMoveState) => m_enemyMoveState = i_enemyMoveState;