void Awake() { mInitPosition = transform.position; mInitRotation = transform.rotation; mSwordShieldState = gameObject.GetComponent<SwordShieldStateMachine>(); BattleField.AddEnemy(mSwordShieldState); mSwordShieldState.onSwitchStateEvent += OnSwitchState; }
void Awake() { instance = this; 血量 = 最大血量; 行动量 = 最大行动量; mCastHP.Add(SwordShieldStateMachine.State.攻击第一段, 攻击第一段扣除血量); mCastHP.Add(SwordShieldStateMachine.State.攻击第二段, 攻击第二段扣除血量); mCastHP.Add(SwordShieldStateMachine.State.后跳攻击, 后跳攻击扣除血量); mCastAP.Add(SwordShieldStateMachine.State.前冲, 前冲消耗行动量); mCastAP.Add(SwordShieldStateMachine.State.后跳, 后跳消耗行动量); mCastAP.Add(SwordShieldStateMachine.State.攻击第一段, 攻击第一段消耗行动量); mCastAP.Add(SwordShieldStateMachine.State.攻击第二段, 攻击第二段消耗行动量); mCastAP.Add(SwordShieldStateMachine.State.后跳攻击, 后跳攻击消耗行动量); mStateToStateName.Add(State.待机, "Idle_Eqip_01"); mStateToStateName.Add(State.前走, "Walk_Eqip_Front"); mStateToStateName.Add(State.前跑, "Run_Eqip"); mStateToStateName.Add(State.前冲, "R_Dash"); mStateToStateName.Add(State.后走, "Walk_Eqip_Back"); mStateToStateName.Add(State.后跳, "R_Step_Back"); mStateToStateName.Add(State.攻击第一段, "R_Attack_08"); mStateToStateName.Add(State.攻击第二段, "R_Attack_08_2"); mStateToStateName.Add(State.后跳攻击, "R_Attack_09"); mStateToStateName.Add(State.技能, "R_Attack_07"); mStateToStateName.Add(State.受创, "Damage_01"); mStateToStateName.Add(State.大受创, "Damage_02"); mStateToStateName.Add(State.死亡, "R_Dead_01"); foreach (var kv in mStateToStateName) { var hash = Animator.StringToHash(kv.Value); mStateToAnimHash.Add(kv.Key, hash); mAnimHashToState.Add(hash, kv.Key); } }
// 只要有行动量就可以行动 bool CastAP(SwordShieldStateMachine.State state) { float castAP; if (!mCastAP.TryGetValue(state, out castAP)) return true; if (castAP <= 0) { Debug.LogWarningFormat("{0} 非法的消耗行动量值", state); return true; } if (!HasEnoughAP()) return false; 行动量 -= castAP; if (行动量 < 0) 行动量 = 0; mDelayRecoverTime = 行动量延迟恢复时间; FireAPChangeEvent(); return true; }
void Awake() { mSwordShieldState = gameObject.GetComponent<SwordShieldStateMachine>(); BattleField.SetPlayer(mSwordShieldState); mSwordShieldState.onSwitchStateEvent += OnSwitchState; }