コード例 #1
0
ファイル: SwordShieldAI.cs プロジェクト: rikpan/Soul
    void Awake()
    {
        mInitPosition = transform.position;
        mInitRotation = transform.rotation;

        mSwordShieldState = gameObject.GetComponent<SwordShieldStateMachine>();
        BattleField.AddEnemy(mSwordShieldState);
        mSwordShieldState.onSwitchStateEvent += OnSwitchState;
    }
コード例 #2
0
    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);
        }
    }
コード例 #3
0
 // 只要有行动量就可以行动
 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;
 }
コード例 #4
0
ファイル: SwordShieldControl.cs プロジェクト: rikpan/Soul
 void Awake()
 {
     mSwordShieldState = gameObject.GetComponent<SwordShieldStateMachine>();
     BattleField.SetPlayer(mSwordShieldState);
     mSwordShieldState.onSwitchStateEvent += OnSwitchState;
 }