protected override BTreeRunningStatus _DoExecute(BTreeTemplateData input, ref BTreeTemplateData output)
        {
            base._DoExecute(input, ref output);
            BTreeInputData  _input  = input as BTreeInputData;
            BTreeOutputData _output = output as BTreeOutputData;

            if (_input == null || _output == null)
            {
                Debugger.LogError("数据类型错误");
            }

            var troop    = _input.troop;
            var outTroop = _output.troop;
            var target   = _input.battleData.mAllTroopDic[troop.targetKey];
            var tar_x    = target.x;
            var tar_y    = target.y;

            outTroop.dir_x = tar_x;
            outTroop.dir_y = tar_y;

            outTroop.state     = (int)TroopAnimState.Attack;
            outTroop.inPrepose = true;
            outTroop.preTime   = TroopHelper.GetTroopAtkPrepareTime(outTroop.type);
            outTroop.isAtk     = true;
            outTroop.norAtkCD  = TroopHelper.GetTroopAtkCDTime(outTroop.type);
            return(BTreeRunningStatus.Finish);
        }
예제 #2
0
        public override Enum Excute(ref FSMInputData _input)
        {
            var       troop    = _input.m_Troop;
            TroopData tarTroop = dataMgr.m_BattleData.mAllTroopDic[troop.targetKey];

            if (tarTroop == null)
            {
                Debugger.LogError("AttackState 未找到目标");
            }
            if (troop.norAtkCD == 0)
            {
                troop.state     = (int)TroopAnimState.Attack;
                troop.dir_x     = tarTroop.x;
                troop.dir_y     = tarTroop.y;
                troop.inPrepose = true;
                troop.preTime   = TroopHelper.GetTroopAtkPrepareTime(troop.type);
                troop.isAtk     = true;
                troop.norAtkCD  = TroopHelper.GetTroopAtkCDTime(troop.type);
            }
            return(TroopFSMState.End);
        }