From d0399fe46098b0c583a0c215ef9720187f5ca8c7 Mon Sep 17 00:00:00 2001 From: chenxi Date: Tue, 18 Apr 2023 16:05:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E9=94=AE=E4=BC=A4=E5=AE=B3=E5=B8=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/app/bf/unity/character_spine_object.lua | 7 ++++++ .../battle/component/battle_unit_comp.lua | 25 ++++++++++++++----- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/lua/app/bf/unity/character_spine_object.lua b/lua/app/bf/unity/character_spine_object.lua index e7059913..7f443044 100644 --- a/lua/app/bf/unity/character_spine_object.lua +++ b/lua/app/bf/unity/character_spine_object.lua @@ -202,6 +202,13 @@ function CharacterSpineObject:getAnimationDuration(animationName) return 0 end +function CharacterSpineObject:getAnimationKeyFrameTime(animationName) + if self.characterSpineHelper then + return self.characterSpineHelper:GetAnimationKeyFrameTime(animationName) + end + return 0 +end + function CharacterSpineObject:addAnimationCompleteCallback(callback) if self._animationStateCompleteCallback then return diff --git a/lua/app/module/battle/component/battle_unit_comp.lua b/lua/app/module/battle/component/battle_unit_comp.lua index 8dbfd6d2..0f128f4c 100644 --- a/lua/app/module/battle/component/battle_unit_comp.lua +++ b/lua/app/module/battle/component/battle_unit_comp.lua @@ -59,6 +59,7 @@ function BattleUnitComp:_initBase() self.switchTime = 0 self.isPlayHurt = 0 self.attackDurationMap = {} + self.attackKeyFrameTimeMap = {} self.shieldBuffList = {} self.activeSkillIndex = nil self.currActiveSkill = nil @@ -106,6 +107,18 @@ function BattleUnitComp:getAnimationDuration(aniName) return duration or 0 end +function BattleUnitComp:getAnimationKeyFrameTime(animationName) + local time = self.attackKeyFrameTimeMap[animationName] + if time == nil then + time = self.baseObject:getAnimationKeyFrameTime(animationName) + if time <= 0 then -- 容错处理 + time = 0.3 + end + self.attackKeyFrameTimeMap[animationName] = time + end + return time +end + function BattleUnitComp:useAssistingSkill(count, callback) local skill = self.unitEntity:getAssistingSkill() if skill == nil then @@ -379,11 +392,11 @@ function BattleUnitComp:enterAssistingAttackState() self.attackOver = false self.attackTime = 0 self.isMove = false - self.currAttackKeyTime = 0.3 local skill = self.unitEntity:getAssistingSkill() skill:startUse() local attackName = skill:getSkillAttackName() self.currAttackDuration = self:getAnimationDuration(attackName) + self.currAttackKeyTime = self:getAnimationKeyFrameTime(attackName) self:playAnimation(attackName, false, false) self:initPosition() end @@ -415,7 +428,6 @@ end function BattleUnitComp:enterSkillAttackState() self.attackOver = false self.attackTime = 0 - self.currAttackKeyTime = 0.3 self.targetX = nil local skill if self.normalSkillCount > 0 then @@ -445,6 +457,7 @@ function BattleUnitComp:enterSkillAttackState() attackName = skill:getSkillAttackName() end self.currAttackDuration = self:getAnimationDuration(attackName) + self.currAttackKeyTime = self:getAnimationKeyFrameTime(attackName) self:playAnimation(attackName, false, false) end end @@ -552,24 +565,23 @@ end function BattleUnitComp:doNextSkillAttack() self.attackTime = 0 - self.currAttackKeyTime = 0.3 local attackName = self.currActiveSkill:getSkillAttackName() self.currAttackDuration = self:getAnimationDuration(attackName) + self.currAttackKeyTime = self:getAnimationKeyFrameTime(attackName) self:playAnimation(attackName, false, false) end function BattleUnitComp:doNextNormalAttack() self.attackTime = 0 - self.currAttackKeyTime = 0.3 local skill = self.unitEntity:getNormalSkill() local attackName = skill:getRandomNormalAttackName() self.currAttackDuration = self:getAnimationDuration(attackName) + self.currAttackKeyTime = self:getAnimationKeyFrameTime(attackName) self:playAnimation(attackName, false, false) end function BattleUnitComp:doNextAttack() self.attackTime = 0 - self.currAttackKeyTime = 0.3 local attackName = nil if self.normalSkillCount > 0 then local skill = self.unitEntity:getNormalSkill() @@ -579,6 +591,7 @@ function BattleUnitComp:doNextAttack() end if attackName then self.currAttackDuration = self:getAnimationDuration(attackName) + self.currAttackKeyTime = self:getAnimationKeyFrameTime(attackName) self:playAnimation(attackName, false, false) else -- 归位 self:moveBackToInitPosition() @@ -588,7 +601,6 @@ end function BattleUnitComp:enterNormalAttackState() self.attackOver = false self.attackTime = 0 - self.currAttackKeyTime = 0.3 local skill = self.unitEntity:getNormalSkill() skill:startUse() if skill:getMoveType() == BattleConst.SKILL_MOVE_TYPE.MOVE then @@ -607,6 +619,7 @@ function BattleUnitComp:enterNormalAttackState() self.attackTime = 0 local attackName = skill:getRandomNormalAttackName() self.currAttackDuration = self:getAnimationDuration(attackName) + self.currAttackKeyTime = self:getAnimationKeyFrameTime(attackName) self:playAnimation(attackName, false, false) end end