From 705b6518867666720b526d4f0139c7ae17ac4b35 Mon Sep 17 00:00:00 2001 From: xiejun <467745540@qq.com> Date: Thu, 14 Dec 2023 17:34:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9skillcast?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Modules/Battle/View/Unit/SkillCaster.lua | 154 +++++++++++------- 1 file changed, 99 insertions(+), 55 deletions(-) diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/SkillCaster.lua b/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/SkillCaster.lua index 53f819dc78..938ba7e738 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/SkillCaster.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/SkillCaster.lua @@ -82,26 +82,54 @@ function SkillCaster:OnSkillCast(skill) displaceoffset=skill.AttackDisplaceOffset end self.owner.GameObject:SetActive(false) - local targets = skill:GetDirectTargets() - for _, target in ipairs(targets) do - local t= self.owner.RootPanel.GetRoleView(target) - local posx=0 - local posy=0 - if displaceoffset and #displaceoffset>0 then - if displaceoffset[1] and type(displaceoffset[1]) ~="userdata" then - posx=displaceoffset[1] - end - if displaceoffset[2] and type(displaceoffset[2]) ~="userdata" then - posy=displaceoffset[2] - end - end + local targets = skill:GetDirectTargets() + LogError( tostring(self:GetMovePosition(skill))) + if #targets >0 then + local postion= self:GetMovePosition(skill) + local posx=0 + local posy=0 + if displaceoffset and #displaceoffset>0 then + if displaceoffset[1] and type(displaceoffset[1]) ~="userdata" then + posx=displaceoffset[1] + end + if displaceoffset[2] and type(displaceoffset[2]) ~="userdata" then + posy=displaceoffset[2] + end + end + LogError(tostring(postion)) + LogError(tostring(Vector3.New(postion.x-(self.owner.camp==0 and posx or(-posx)),postion.y+posy,postion.z))) + self.owner.RoleLiveGO.transform:DOLocalMove(Vector3.New(postion.x-(self.owner.camp==0 and posx or(-posx)),postion.y+posy,postion.z), combat.AttackDisplaceTime/1000, false):OnComplete(function () + if self.owner.OnSkillPlay then + self.owner:OnSkillPlay(localtype,combat) + end + end) + else + for _, target in ipairs(targets) do + local t= self.owner.RootPanel.GetRoleView(target) + local posx=0 + local posy=0 + if displaceoffset and #displaceoffset>0 then + if displaceoffset[1] and type(displaceoffset[1]) ~="userdata" then + posx=displaceoffset[1] + end + if displaceoffset[2] and type(displaceoffset[2]) ~="userdata" then + posy=displaceoffset[2] + end + end + + --LogError("技能位移Id"..combat.Id.."开始时间"..os.date()) + self.owner.RoleLiveGO.transform:DOMove(Vector3.New(t.GameObject.transform.position.x-(self.owner.camp==0 and displaceoffset[1] or(-displaceoffset[1])),t.GameObject.transform.position.y+displaceoffset[2],t.GameObject.transform.position.z), combat.AttackDisplaceTime/1000, false):OnComplete(function () + if self.owner.OnSkillPlay then + self.owner:OnSkillPlay(localtype,combat) + --LogError("技能位移Id"..combat.Id.."结束时间"..os.date()) + end + end) + + + end + end + - self.owner.RoleLiveGO.transform:DOMove(Vector3.New(t.GameObject.transform.position.x-(self.owner.camp==0 and posx or(-posx)),t.GameObject.transform.position.y+posy,t.GameObject.transform.position.z), combat.AttackDisplaceTime/1000, false):OnComplete(function () - if self.owner.OnSkillPlay then - self.owner:OnSkillPlay(localtype,combat) - end - end) - end else if self.owner.OnSkillPlay then self.owner:OnSkillPlay(localtype,combat) @@ -109,36 +137,36 @@ function SkillCaster:OnSkillCast(skill) end -- 播放 -- 这里相当于技能前摇,等待立绘播放到需要释放关键帧的时间时继续释放技能(人物前摇特效) - if combat.AttackDisplacement ==1 then - local displaceoffset={[1]=0.4,[2]=-0.2} - -- if skill.type==2 and self.owner.superSkillAttackDisplaceoffset then - -- displaceoffset=self.owner.superSkillAttackDisplaceoffset - -- elseif self.owner.SkillAttackDisplaceoffset then - -- displaceoffset=self.owner.SkillAttackDisplaceoffset - -- end - if skill.AttackDisplaceOffset then - if skill.AttackDisplaceOffset and #skill.AttackDisplaceOffset>0 and type(skill.AttackDisplaceOffset[1]) ~="userdata" and type(skill.AttackDisplaceOffset[2]) ~="userdata" then - displaceoffset=skill.AttackDisplaceOffset - end - end - self.owner.GameObject:SetActive(false) - local targets = skill:GetDirectTargets() - for _, target in ipairs(targets) do + -- if combat.AttackDisplacement ==1 then + -- local displaceoffset={[1]=0.4,[2]=-0.2} + -- -- if skill.type==2 and self.owner.superSkillAttackDisplaceoffset then + -- -- displaceoffset=self.owner.superSkillAttackDisplaceoffset + -- -- elseif self.owner.SkillAttackDisplaceoffset then + -- -- displaceoffset=self.owner.SkillAttackDisplaceoffset + -- -- end + -- if skill.AttackDisplaceOffset then + -- if skill.AttackDisplaceOffset and #skill.AttackDisplaceOffset>0 and type(skill.AttackDisplaceOffset[1]) ~="userdata" and type(skill.AttackDisplaceOffset[2]) ~="userdata" then + -- displaceoffset=skill.AttackDisplaceOffset + -- end + -- end + -- self.owner.GameObject:SetActive(false) + -- local targets = skill:GetDirectTargets() + -- for _, target in ipairs(targets) do - local t= self.owner.RootPanel.GetRoleView(target) - --LogError("技能位移Id"..combat.Id.."开始时间"..os.date()) - self.owner.RoleLiveGO.transform:DOMove(Vector3.New(t.GameObject.transform.position.x-(self.owner.camp==0 and displaceoffset[1] or(-displaceoffset[1])),t.GameObject.transform.position.y+displaceoffset[2],t.GameObject.transform.position.z), combat.AttackDisplaceTime/1000, false):OnComplete(function () - if self.owner.OnSkillPlay then - self.owner:OnSkillPlay(localtype,combat) - --LogError("技能位移Id"..combat.Id.."结束时间"..os.date()) - end - end) - end - else - if self.owner.OnSkillPlay then - self.owner:OnSkillPlay(localtype,combat) - end - end + -- local t= self.owner.RootPanel.GetRoleView(target) + -- --LogError("技能位移Id"..combat.Id.."开始时间"..os.date()) + -- self.owner.RoleLiveGO.transform:DOMove(Vector3.New(t.GameObject.transform.position.x-(self.owner.camp==0 and displaceoffset[1] or(-displaceoffset[1])),t.GameObject.transform.position.y+displaceoffset[2],t.GameObject.transform.position.z), combat.AttackDisplaceTime/1000, false):OnComplete(function () + -- if self.owner.OnSkillPlay then + -- self.owner:OnSkillPlay(localtype,combat) + -- --LogError("技能位移Id"..combat.Id.."结束时间"..os.date()) + -- end + -- end) + -- end + -- else + -- if self.owner.OnSkillPlay then + -- self.owner:OnSkillPlay(localtype,combat) + -- end + -- end if self.owner.role.type == BattleUnitType.Role then if combat.BeforeEffectDelay then self.owner:DelayFunc(combat.BeforeEffectDelay/1000, function() @@ -314,11 +342,27 @@ local FullEffectPosition = { Enemy_All = Vector3.New(50, 0, 0), Enemy_Front = Vector3.New(0, 0, 0), - Enemy_Behind = Vector3.New(150,0 , 0), + Enemy_Behind = Vector3.New(150,0 , 0), Enemy_COL_1 = Vector3.New(-50, 0, 0), Enemy_COL_2 = Vector3.New(0, 0, 0), Enemy_COL_3 = Vector3.New(50, 0, 0), } +local MoveMentPosition = { + My_All = Vector3.New(-300, 0, 0), + My_Front = Vector3.New(-120, 0, 0), + My_Behind = Vector3.New(20, 0, 0), + My_COL_1 = Vector3.New(-300, -566, 0), + My_COL_2 = Vector3.New(0, -566, 0), + My_COL_3 = Vector3.New(300, -566, 0), + + + Enemy_All = Vector3.New(50, 0, 0), --全部 + Enemy_Front = Vector3.New(0, 0, 0),--前面一列 + Enemy_Behind = Vector3.New(990,-551 , 0), --后面一列 + Enemy_COL_1 = Vector3.New(990, 916, 0),--第一行 + Enemy_COL_2 = Vector3.New(990, 378, 0),--第二行 + Enemy_COL_3 = Vector3.New(990, -250, 0),--第三行 +} function SkillCaster:GetEffectSPostion(skill) local chooseId = skill:GetDirectChooseId() local chooseLimit = math.floor(chooseId / 10000) % 10 @@ -334,7 +378,7 @@ function SkillCaster:GetEffectSPostion(skill) end return FullEffectPosition.My_All end -function SkillCaster:GetEffectPosition(skill) +function SkillCaster:GetMovePosition(skill) local chooseId = skill:GetDirectChooseId() local chooseLimit = math.floor(chooseId / 10000) % 10 local targets = skill:GetDirectTargets() @@ -344,18 +388,18 @@ function SkillCaster:GetEffectPosition(skill) if chooseLimit == 0 or chooseLimit == 4 or chooseLimit == 5 then - return targetCamp == 0 and FullEffectPosition.My_All or FullEffectPosition.Enemy_All + return targetCamp == 0 and MoveMentPosition.My_All or MoveMentPosition.Enemy_All elseif chooseLimit == 1 or chooseLimit == 2 then --前排,后排 if targetCamp == 0 then - return targetPos <= 3 and FullEffectPosition.My_Front or FullEffectPosition.My_Behind + return targetPos <= 3 and MoveMentPosition.My_Front or MoveMentPosition.My_Behind else - return targetPos <= 3 and FullEffectPosition.Enemy_Front or FullEffectPosition.Enemy_Behind + return targetPos <= 3 and MoveMentPosition.Enemy_Front or MoveMentPosition.Enemy_Behind end elseif chooseLimit == 3 then --队列 local col = (targetPos-1) % 3 + 1 - return targetCamp == 0 and FullEffectPosition["My_COL_"..col] or FullEffectPosition["Enemy_COL_"..col] + return targetCamp == 0 and MoveMentPosition["My_COL_"..col] or MoveMentPosition["Enemy_COL_"..col] end - return FullEffectPosition.My_All + return MoveMentPosition.My_All end -- 检测特效旋转