diff --git a/lua/app/module/battle/component/battle_unit_comp.lua b/lua/app/module/battle/component/battle_unit_comp.lua index 3ac23cb6..90bc4ec6 100644 --- a/lua/app/module/battle/component/battle_unit_comp.lua +++ b/lua/app/module/battle/component/battle_unit_comp.lua @@ -44,7 +44,7 @@ function BattleUnitComp:_initBase() self.buffList = {} self.sameBuffCount = {} self.shieldBuffList = {} - self.activeSkillIndex = 1 + self.activeSkillIndex = nil self.currActiveSkill = nil self.targetX = nil self.currState = UNIT_STATE.INIT @@ -89,6 +89,21 @@ function BattleUnitComp:getAnimationDuration(aniName) return duration or 0 end +function BattleUnitComp:useSkill(index, callback) + self.actionOverCallback = callback + self.activeSkillIndex = nil + self.currActiveSkill = self.unitEntity:getActiveSkill(index) + if self.currActiveSkill == nil then + self.actionOverCallback = nil + callback() + return + end + if not self:changeState(UNIT_STATE.SKILL_ATTACK) then + self.actionOverCallback = nil + callback() + end +end + function BattleUnitComp:useAllSkills(callback) self.actionOverCallback = callback self.activeSkillIndex = 1 @@ -294,8 +309,12 @@ function BattleUnitComp:updateSkillAttack(dt) self.isMove = false self.positionX = self.targetX if self.attackOver then -- 归位后该进行下一次攻击了 - self.activeSkillIndex = self.activeSkillIndex + 1 - self.currActiveSkill = self.unitEntity:getActiveSkill(self.activeSkillIndex) + if self.activeSkillIndex then + self.activeSkillIndex = self.activeSkillIndex + 1 + self.currActiveSkill = self.unitEntity:getActiveSkill(self.activeSkillIndex) + else + self.currActiveSkill = nil + end if self.currActiveSkill == nil then self:changeState(UNIT_STATE.IDLE) local callback = self.actionOverCallback @@ -325,8 +344,11 @@ function BattleUnitComp:updateSkillAttack(dt) self.attackTime = self.attackTime + dt if self.attackTime >= self.currAttackDuration then self.attackOver = true - self.activeSkillIndex = self.activeSkillIndex + 1 - local currActiveSkill = self.unitEntity:getActiveSkill(self.activeSkillIndex) + local currActiveSkill = nil + if self.activeSkillIndex then + self.activeSkillIndex = self.activeSkillIndex + 1 + currActiveSkill = self.unitEntity:getActiveSkill(self.activeSkillIndex) + end if currActiveSkill == nil then if self.targetX then -- 移动过,准备归位 self.isMove = true diff --git a/lua/app/module/battle/controller/battle_controller.lua b/lua/app/module/battle/controller/battle_controller.lua index 0e1f319d..520b6718 100644 --- a/lua/app/module/battle/controller/battle_controller.lua +++ b/lua/app/module/battle/controller/battle_controller.lua @@ -1227,7 +1227,12 @@ local function _generalAttack(self, instruction, callback) end local function _playSkill(self, instruction, callback) - callback() + local hero = self.atkUnits[instruction.skillMatch] + if hero == nil then + return callback() + end + self.atkMainUnit = hero + hero:useSkill(1, callback) end