From 51bb90edce581f69e63c9aec6fb1ea57263bff6c Mon Sep 17 00:00:00 2001 From: zhangqiang <657634622@qq.com> Date: Mon, 29 Mar 2021 12:07:28 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E7=A7=B0=E5=8F=B7=E5=9D=90=E9=AA=91?= =?UTF-8?q?=E6=97=B6=E8=A3=85=E3=80=91=20=E5=8D=8F=E8=AE=AE=20=E6=97=A0?= =?UTF-8?q?=E5=B0=BD=E5=89=AF=E6=9C=AC=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../~Lua/Modules/Main/MainPanel.lua | 46 +++++-- .../~Lua/Modules/Map/View/MapPlayerView.lua | 122 ++++++++++-------- .../~Lua/Modules/Player/PlayerManager.lua | 31 +++-- .../~Lua/Modules/Popup/RewardItemPopup.lua | 5 +- .../Popup/RewardItemSingleShowPopup.lua | 16 +++ .../Modules/Setting/SettingPlayerRide.lua | 13 +- .../~Lua/View/PlayerLiveView.lua | 116 +++++++++-------- 7 files changed, 213 insertions(+), 136 deletions(-) diff --git a/Assets/ManagedResources/~Lua/Modules/Main/MainPanel.lua b/Assets/ManagedResources/~Lua/Modules/Main/MainPanel.lua index a028b3f817..20b2915bfc 100644 --- a/Assets/ManagedResources/~Lua/Modules/Main/MainPanel.lua +++ b/Assets/ManagedResources/~Lua/Modules/Main/MainPanel.lua @@ -311,18 +311,8 @@ function this:BindEvent() table.insert(curNPCList,view) end end) - self.playerView = MainPlayerView.New(true, this.btnClickMove, rect, Vector2.New(-1210, 0)) - table.insert(curNPCList,self.playerView) - --角色点击行走 - self.trigger.onPointerClick = self.trigger.onPointerClick + function(p, d) - local x, v2 = RectTransformUtility.ScreenPointToLocalPointInRectangle(btnClickMoveTran, Input.mousePosition, UIManager.camera, nil) - if not self.moveTween.enabled then - local b1 = v2.x < rect.xMax and v2.x > rect.xMin and v2.y < rect.yMax and v2.y > rect.yMin - if b1 then - self.playerView:SetRolePos(v2) - end - end - end + --实例化自己 + this:OnChangeTitleOrRideOrSkin(rect) --GM工具 Util.AddClick(this.headBox, function() @@ -792,6 +782,9 @@ function this:OnShow() this.playerHead:SetLayer(this.sortingOrder) this.playerHead:SetEffectScale(0.85) + --刷新主城npc + PlayerManager.SetisRefreshMainPanelNpc(true) + this:OnChangeTitleOrRideOrSkin() Log(string.format("---------------------%s", BagManager.GetItemCountById(14))) this.UpView:OnOpen({ showType = UpViewOpenType.ShowRight, panelType = PanelType.Main }) @@ -1376,4 +1369,33 @@ function this.OnMainPlayerNPCRefresh() end end end +function this:OnChangeTitleOrRideOrSkin() + local curisRefreshMainPanelNpc = PlayerManager.GetisRefreshMainPanelNpc() + LogBlue("sssssssssssssssssssssssssssssssssssss "..tostring(curisRefreshMainPanelNpc)) + if not curisRefreshMainPanelNpc then return end + local btnClickMoveTran = this.btnClickMove:GetComponent("RectTransform") + local rect = btnClickMoveTran.rect + if self.playerView then + for key, value in pairs(curNPCList) do + if value == self.playerView then + LogBlue("移除旧的 self.playerView") + table.remove(curNPCList,key) + end + end + self.playerView.NpcGO:OnClose() + end + self.playerView = MainPlayerView.New(true, this.btnClickMove, rect, Vector2.New(-1210, 0)) + table.insert(curNPCList,self.playerView) + --角色点击行走 + self.trigger.onPointerClick = self.trigger.onPointerClick + function(p, d) + local x, v2 = RectTransformUtility.ScreenPointToLocalPointInRectangle(btnClickMoveTran, Input.mousePosition, UIManager.camera, nil) + if not self.moveTween.enabled then + local b1 = v2.x < rect.xMax and v2.x > rect.xMin and v2.y < rect.yMax and v2.y > rect.yMin + if b1 then + self.playerView:SetRolePos(v2) + end + end + end + PlayerManager.SetisRefreshMainPanelNpc(false) +end return MainPanel \ No newline at end of file diff --git a/Assets/ManagedResources/~Lua/Modules/Map/View/MapPlayerView.lua b/Assets/ManagedResources/~Lua/Modules/Map/View/MapPlayerView.lua index a32dae1370..e70f0abe8e 100644 --- a/Assets/ManagedResources/~Lua/Modules/Map/View/MapPlayerView.lua +++ b/Assets/ManagedResources/~Lua/Modules/Map/View/MapPlayerView.lua @@ -3,33 +3,35 @@ local this = {} local ctrlView = require("Modules/Map/View/MapControllView") local mapNpcOp = "UI_effect_DiTu_huoguang" -local mapNpc = "live2d_npc_map" -local mapNpc2 = "live2d_npc_map_nv" +-- local mapNpc = "live2d_npc_map" +-- local mapNpc2 = "live2d_npc_map_nv" local npc, scale -local testAnims = { - "jingya", - "lauch", - "touch" -} -local SkeletonGraphic +-- local testAnims = { +-- "jingya", +-- "lauch", +-- "touch" +-- } +-- local SkeletonGraphic -- 设置idel动画时角色是否还在行走 local isRoleWalk = false local idleFunc = function() - if this.bLeaderIsIdle and not isRoleWalk and SkeletonGraphic and SkeletonGraphic.AnimationState then - SkeletonGraphic.AnimationState:SetAnimation(0, "idle", true) - SkeletonGraphic.transform.localEulerAngles = Vector3.zero + if this.bLeaderIsIdle and not isRoleWalk then--and SkeletonGraphic and SkeletonGraphic.AnimationState + -- SkeletonGraphic.AnimationState:SetAnimation(0, "idle", true) + -- SkeletonGraphic.transform.localEulerAngles = Vector3.zero + this.NpcGO:SetWalkDir(WALK_DIR.IDLE_FRONT) end end -local index = 1 +local index = Random.Range(9,11) local AnimTimer = Timer.New(function () - if SkeletonGraphic and not isRoleWalk and this.leader then + if not isRoleWalk and this.leader then--SkeletonGraphic and PlayUIAnim(Util.GetGameObject(this.leader, "root/ui/arrow")) - SkeletonGraphic.AnimationState:SetAnimation(0, testAnims[index], false) - index = index + 1 - if index > 3 then - index = 1 - end + -- SkeletonGraphic.AnimationState:SetAnimation(0, testAnims[index], false) + this.NpcGO:SetWalkDir(index) + -- index = index + 1 + -- if index > 3 then + -- index = 1 + -- end end end, 5, -1, true) local MapPanel @@ -74,10 +76,14 @@ function this.Init(pos,num) if num ==1 then this.InitRolePre(u, v) end - SkeletonGraphic = Util.GetGameObject(this.leader, "root/ui/roleRoot/npc"):GetComponent("SkeletonGraphic") - SkeletonGraphic.AnimationState.Complete = SkeletonGraphic.AnimationState.Complete + idleFunc - SkeletonGraphic.AnimationState:SetAnimation(0, "lauch", false) - SkeletonGraphic.transform.localEulerAngles = Vector3.zero + -- SkeletonGraphic = Util.GetGameObject(this.leader, "root/ui/roleRoot/npc"):GetComponent("SkeletonGraphic") + -- SkeletonGraphic.AnimationState.Complete = SkeletonGraphic.AnimationState.Complete + idleFunc + -- SkeletonGraphic.AnimationState:SetAnimation(0, "lauch", false) + -- SkeletonGraphic.transform.localEulerAngles = Vector3.zero + if this.NpcGO then + this.NpcGO:CurAnimationCompleteAddFun(idleFunc) + this.NpcGO:SetWalkDir(WALK_DIR.LAUCH) + end AnimTimer:Start() this.leader:SetActive(true) TileMapView.CameraTween(this.leaderMapData.u, this.leaderMapData.v, 0.4) @@ -129,10 +135,15 @@ function this.InitRolePre(u, v) this.leader.transform.localPosition = Vector3(v3.x, v3.y, v3.z - 10) this.leader.transform.localScale = Vector3.one * 1.5 - npc = NameManager.roleSex == ROLE_SEX.BOY and mapNpc or mapNpc2 - scale = NameManager.roleSex == ROLE_SEX.BOY and Vector3.one or Vector3.one * 0.5 - this.NpcGO = poolManager:LoadLive(npc, Util.GetTransform(this.leader, "root/ui/roleRoot"), scale, Vector3.zero) - this.NpcGO.name = "npc" + -- npc = NameManager.roleSex == ROLE_SEX.BOY and mapNpc or mapNpc2 + -- scale = NameManager.roleSex == ROLE_SEX.BOY and Vector3.one or Vector3.one * 0.5 + -- this.NpcGO = poolManager:LoadLive(npc, Util.GetTransform(this.leader, "root/ui/roleRoot"), scale, Vector3.zero) + -- this.NpcGO.name = "npc" + if this.NpcGO then + this.NpcGO:OnClose() + end + this.NpcGO = PlayerLiveView:New(Util.GetTransform(this.leader, "root/ui/roleRoot"),1) + this.NpcGO:OnOpen(100,Vector3.New(0,40,0),WALK_DIR.IDLE_FRONT) end function this.RefreshOption() @@ -406,25 +417,25 @@ end -- ========================== 角色行走管理 ========================================== -- 设置角色行走方向 -local WALK_DIR = { - RIGHT = {animation = "move2", y = 0}, - LEFT = {animation = "move2", y = 180}, - UP = {animation = "move3", y = 0}, - DOWN = {animation = "move", y = 0}, -} +-- local WALK_DIR = { +-- RIGHT = {animation = "move2", y = 0}, +-- LEFT = {animation = "move2", y = 180}, +-- UP = {animation = "move3", y = 0}, +-- DOWN = {animation = "move", y = 0}, +-- } function this.SetRoleDirAction(u, v, isBack) local dU = isBack and this.leaderMapData.u - u or u - this.leaderMapData.u local dV = isBack and this.leaderMapData.v - v or v - this.leaderMapData.v if dU > 0 then - this.SetWalkDir(WALK_DIR.RIGHT) + this.SetWalkDir(WALK_DIR.RUN_RIGHT) elseif dU < 0 then - this.SetWalkDir(WALK_DIR.LEFT) + this.SetWalkDir(WALK_DIR.RUN_LEFT) elseif dV < 0 then - this.SetWalkDir(WALK_DIR.UP) + this.SetWalkDir(WALK_DIR.RUN_UP) elseif dV > 0 then - this.SetWalkDir(WALK_DIR.DOWN) + this.SetWalkDir(WALK_DIR.RUN_DOWN) end SoundManager.PlaySound(SoundConfig.Sound_FootStep..math.random(1,7)) end @@ -433,20 +444,22 @@ function this.SetWalkDir(dir) isRoleWalk = true if not curDir or curDir ~= dir then curDir = dir - if SkeletonGraphic then - SkeletonGraphic.transform.localEulerAngles = Vector3.New(0, dir.y, 0) - SkeletonGraphic.AnimationState:SetAnimation(0, dir.animation, true) - end + -- if SkeletonGraphic then + -- SkeletonGraphic.transform.localEulerAngles = Vector3.New(0, dir.y, 0) + -- SkeletonGraphic.AnimationState:SetAnimation(0, dir.animation, true) + -- end + this.NpcGO:SetWalkDir(dir) end end function this.SetRoleBattleAction() curDir = nil - if SkeletonGraphic then - SkeletonGraphic.AnimationState:SetAnimation(0, "jingya", false) - SkeletonGraphic.transform.localEulerAngles = Vector3.zero - end + -- if SkeletonGraphic then + -- SkeletonGraphic.AnimationState:SetAnimation(0, "jingya", false) + -- SkeletonGraphic.transform.localEulerAngles = Vector3.zero + -- end + this.NpcGO:SetWalkDir(WALK_DIR.JINGYA) end -- 设置角色的位置 @@ -485,9 +498,12 @@ end function this.PlayerIdle() this.bLeaderIsIdle = true AnimTimer:Start() - if SkeletonGraphic and SkeletonGraphic.AnimationState then - SkeletonGraphic.AnimationState:SetAnimation(0, "idle", true) - SkeletonGraphic.transform.localEulerAngles = Vector3.zero + -- if SkeletonGraphic and SkeletonGraphic.AnimationState then + -- SkeletonGraphic.AnimationState:SetAnimation(0, "idle", true) + -- SkeletonGraphic.transform.localEulerAngles = Vector3.zero + -- end + if this.NpcGO then + this.NpcGO:SetWalkDir(WALK_DIR.IDLE_FRONT) end curDir = nil isRoleWalk = false @@ -502,17 +518,19 @@ end function this.Dispose() AnimTimer:Stop() - if this.NpcGO then - SkeletonGraphic.AnimationState.Complete = SkeletonGraphic.AnimationState.Complete - idleFunc - poolManager:UnLoadLive(npc, this.NpcGO) + this.NpcGO:OnClose() end + -- if this.NpcGO then + -- SkeletonGraphic.AnimationState.Complete = SkeletonGraphic.AnimationState.Complete - idleFunc + -- poolManager:UnLoadLive(npc, this.NpcGO) + -- end if this.leader then poolManager:UnLoadAsset(mapNpcOp, this.leader, PoolManager.AssetType.GameObject) end this.leader = nil - this.NpcGO = nil - SkeletonGraphic = nil + -- this.NpcGO = nil + -- SkeletonGraphic = nil -- buff Util.SetParticleScale(this.buffEffectRoot, 0.5) -- 重置buff特效回原大小 diff --git a/Assets/ManagedResources/~Lua/Modules/Player/PlayerManager.lua b/Assets/ManagedResources/~Lua/Modules/Player/PlayerManager.lua index c66f3dc625..d820c5b422 100644 --- a/Assets/ManagedResources/~Lua/Modules/Player/PlayerManager.lua +++ b/Assets/ManagedResources/~Lua/Modules/Player/PlayerManager.lua @@ -35,6 +35,7 @@ this.headFrameList = {} this.MainPanelRoleMonveState = false --激活的称号 时装 坐骑 +this.isRefreshMainPanelNpc = false this.userSkinList = {}--[id] = {skinId , overTime} this.userTitleList = {}--[id] = {titleId , overTime} this.userMountList = {}--[id] = {mountId , overTime} @@ -346,6 +347,12 @@ function this.GetPlayerRide(value) --加判断是否到时间 卸掉 return PlayerManager.ride end +function this.SetisRefreshMainPanelNpc(state) + this.isRefreshMainPanelNpc = state +end +function this.GetisRefreshMainPanelNpc(state) + return this.isRefreshMainPanelNpc +end --初始化所以激活的称号 时装 坐骑 function this.InitSkinTitleMountData(userSkinList,userTitleList,userMountList) this.userSkinList = {}--[id] = {skinId , overTime} @@ -372,15 +379,15 @@ function this.InitSkinTitleMountData(userSkinList,userTitleList,userMountList) end end --设置称号 时装 坐骑 的限时时间 -function this.SetPlayerSkinTime(id,overTime) +function this.SetPlayerSkinTime(id,validTime) if this.userSkinList then - if overTime then--不为空时是设置时间 没有会新加数据 + if validTime then--不为空时是设置时间 没有会新加数据 if this.userSkinList[id] then - this.userSkinList[id].overTime = overTime + this.userSkinList[id].validTime = validTime else local singData = {} singData.skinId = id - singData.overTime = overTime + singData.validTime = validTime this.userSkinList[singData.skinId] = singData end else--为空时是删除数据 倒计时结束时 @@ -391,15 +398,15 @@ function this.SetPlayerSkinTime(id,overTime) end end -function this.SetPlayerTitleTime(id,overTime) +function this.SetPlayerTitleTime(id,validTime) if this.userTitleList then - if overTime then--不为空时是设置时间 没有会新加数据 + if validTime then--不为空时是设置时间 没有会新加数据 if this.userTitleList[id] then - this.userTitleList[id].overTime = overTime + this.userTitleList[id].validTime = validTime else local singData = {} singData.titleId = id - singData.overTime = overTime + singData.validTime = validTime this.userTitleList[singData.titleId] = singData end else--为空时是删除数据 倒计时结束时 @@ -410,15 +417,15 @@ function this.SetPlayerTitleTime(id,overTime) end end -function this.SetPlayerMountTime(id,overTime) +function this.SetPlayerMountTime(id,validTime) if this.userMountList then - if overTime then--不为空时是设置时间 没有会新加数据 + if validTime then--不为空时是设置时间 没有会新加数据 if this.userMountList[id] then - this.userMountList[id].overTime = overTime + this.userMountList[id].validTime = validTime else local singData = {} singData.mountId = id - singData.overTime = overTime + singData.validTime = validTime this.userMountList[singData.mountId] = singData end else--为空时是删除数据 倒计时结束时 diff --git a/Assets/ManagedResources/~Lua/Modules/Popup/RewardItemPopup.lua b/Assets/ManagedResources/~Lua/Modules/Popup/RewardItemPopup.lua index 49d060a66a..14449eaadc 100644 --- a/Assets/ManagedResources/~Lua/Modules/Popup/RewardItemPopup.lua +++ b/Assets/ManagedResources/~Lua/Modules/Popup/RewardItemPopup.lua @@ -340,8 +340,9 @@ function RewardItemPopup:SetItemShow(drop) UIManager.OpenPanel(UIName.DropGetSSRHeroShopPanel,curItemData.backData, func) elseif curItemData.configData and curItemData.itemType==1 and (curItemData.configData.ItemType == ItemType.Title or curItemData.configData.ItemType == ItemType.Ride) then--皮肤 坐骑 - isPopGetSSR = true - UIManager.OpenPanel(UIName.DropGetPlayerDecorateShopPanel,curItemData.backData, func) + -- isPopGetSSR = true + -- UIManager.OpenPanel(UIName.DropGetPlayerDecorateShopPanel,curItemData.backData, func) + func() else func() end diff --git a/Assets/ManagedResources/~Lua/Modules/Popup/RewardItemSingleShowPopup.lua b/Assets/ManagedResources/~Lua/Modules/Popup/RewardItemSingleShowPopup.lua index b0c117d2c0..de0f609df2 100644 --- a/Assets/ManagedResources/~Lua/Modules/Popup/RewardItemSingleShowPopup.lua +++ b/Assets/ManagedResources/~Lua/Modules/Popup/RewardItemSingleShowPopup.lua @@ -157,6 +157,22 @@ function RewardItemSingleShowPopup:BindEvent() PopupTipPanel.ShowTip(Language[12171]) end) end + elseif itemConfigData.ItemType == ItemType.Ride then + if PlayerManager.userMountList[itemConfigData.Id] then + MsgPanel.ShowTwo("当前已激活该坐骑,是否要重复使用?",nil,function() + NetManager.ActiveUserMountRequest(itemSid,function (msg) + PlayerManager.SetPlayerMountTime(itemSid,msg.validTime) + self:ClosePanel() + PopupTipPanel.ShowTip("成功激活坐骑!") + end) + end) + else + NetManager.ActiveUserMountRequest(itemSid,function (msg) + PlayerManager.SetPlayerMountTime(itemSid,msg.validTime) + self:ClosePanel() + PopupTipPanel.ShowTip("成功激活坐骑!") + end) + end elseif itemConfigData then JumpManager.GoJump(itemConfigData.UseJump,function () this:ClosePanel() diff --git a/Assets/ManagedResources/~Lua/Modules/Setting/SettingPlayerRide.lua b/Assets/ManagedResources/~Lua/Modules/Setting/SettingPlayerRide.lua index c807bfd3ba..5ae1c8e7fb 100644 --- a/Assets/ManagedResources/~Lua/Modules/Setting/SettingPlayerRide.lua +++ b/Assets/ManagedResources/~Lua/Modules/Setting/SettingPlayerRide.lua @@ -159,17 +159,16 @@ function this.SingleRideClickShowInfo(data,isGet,isUser) if not isGet and not isUser then PopupTipPanel.ShowTip( curItemConfig.ItemDescribe) elseif isGet and not isUser then - NetManager.ActiveUserMountRequest(curPlayerHeadIconConfig.Id,function(msg) - LogBlue("骑上金牛: "..curPlayerHeadIconConfig.Id) + NetManager.RequestChangeModifyDecoration(3,curPlayerHeadIconConfig.Id,function(msg) PlayerManager.SetPlayerRide(curPlayerHeadIconConfig.Id) - PlayerManager.SetPlayerMountTime(curPlayerHeadIconConfig.Id,msg.validTime) - --刷新主城自己npc + this.ShowPanelData() + PlayerManager.SetisRefreshMainPanelNpc(true) end) elseif isGet and isUser then - NetManager.ActiveUserMountRequest(0,function() - LogBlue("取消骑乘") + NetManager.RequestChangeModifyDecoration(3,0,function() PlayerManager.SetPlayerRide(0) - --刷新主城自己npc + this.ShowPanelData() + PlayerManager.SetisRefreshMainPanelNpc(true) end) end end) diff --git a/Assets/ManagedResources/~Lua/View/PlayerLiveView.lua b/Assets/ManagedResources/~Lua/View/PlayerLiveView.lua index 5794abe00b..8511ca04a5 100644 --- a/Assets/ManagedResources/~Lua/View/PlayerLiveView.lua +++ b/Assets/ManagedResources/~Lua/View/PlayerLiveView.lua @@ -36,7 +36,6 @@ function PlayerLiveView:New(gameObject,_Type, PlayerLiveViewData,orginLayer) instance.leader.transform:SetParent(gameObject.transform) instance.leader.transform.localPosition = Vector3.zero instance.leader.transform.localScale = Vector3.one - LogBlue("gameObject "..gameObject.name) instance.liveParent = Util.GetGameObject(instance.leader, "liveParent") instance.rideLiveGo = Util.GetGameObject(instance.leader, "liveParent/rideLive") instance.playerLiveGo = Util.GetGameObject(instance.leader, "liveParent/playerLive") @@ -160,54 +159,6 @@ function PlayerLiveView:OnShowLive() end end ---设置位置 -function PlayerLiveView:SelectRenPos(ChapterRolePosition,localScaleVer,_parent) - if self.liveParent then - self.liveParent:SetActive(true) - if _parent then - self.liveParent.transform:SetParent(_parent.transform) - end - self.liveParent.transform.localScale = Vector3.New(localScaleVer[1],localScaleVer[2],1) - self.liveParent:GetComponent("RectTransform").anchoredPosition3D = Vector3.New(ChapterRolePosition[1], ChapterRolePosition[2], 10) - end -end - --- 走动 传 起始位置 和 目标位置 -function PlayerLiveView:SetRoleWalk(_pos,_tagerPos,_fun) - local pos = _pos - local targetPos = _tagerPos - local speed = 5 -- 越大越慢 到时候 会读表 - self.liveParent.transform:DOLocalMove(targetPos, speed / 5, false):OnStart(function () - PlayerLiveView:SetRoleDirAction(targetPos.x, targetPos.y, pos.x, pos.y) - end):OnUpdate(function() --TODO:测试速度 - - end):OnComplete(function () - Log("行走完毕") - if self.rideLive then - self.rideLivSkeletonGraphic.AnimationState:SetAnimation(0, "idle", true) - else - self.playerLiveSkeletonGraphic.AnimationState:SetAnimation(0, "idle", true) - end - if _fun then - _fun() - _fun = nil - end - end):SetEase(Ease.Linear) -end - -function PlayerLiveView:SetRoleDirAction(targetU, targetV, u0, v0) - local dU = targetU - u0 - local dV = targetV - v0 - if dU > 0 then - PlayerLiveView:SetWalkDir(WALK_DIR.RUN_RIGHT) - elseif dU < 0 then - PlayerLiveView:SetWalkDir(WALK_DIR.RUN_LEFT) - elseif dV < 0 then - PlayerLiveView:SetWalkDir(WALK_DIR.RUN_UP) - elseif dV > 0 then - PlayerLiveView:SetWalkDir(WALK_DIR.RUN_DOWN) - end -end function PlayerLiveView:SetWalkDir(dir) LogBlue("PlayerLiveView dir : "..dir) @@ -304,7 +255,6 @@ function PlayerLiveView:SetWalkDir(dir) end end function PlayerLiveView:SetWalkDirInfo(playerDir,RideDir) - LogBlue("ssssssssssssssssss") if playerDir and not RideDir then LogBlue("PlayerLiveView playerDir : "..playerDir.animation .." ".. playerDir.y) self.playerLiveSkeletonGraphic.transform.localEulerAngles = Vector3.New(0, playerDir.y, 0) @@ -327,7 +277,6 @@ function PlayerLiveView:SetWalkDirInfo(playerDir,RideDir) end end function PlayerLiveView:SetSiblingIndexPlayerOrRide(type) - LogBlue("type "..type) if type == 1 then--坐骑靠前 self.playerLiveGo.transform:SetSiblingIndex(2) self.rideLiveGo.transform:SetSiblingIndex(3) @@ -356,4 +305,69 @@ function PlayerLiveView:OnClose() end end +--判断动画是否存在 +-- function PlayerLiveView:CurAnimationState() +-- -- SkeletonGraphic and SkeletonGraphic.AnimationState +-- return true +-- end +--判断动画是否存在 +function PlayerLiveView:CurAnimationCompleteAddFun(idleFunc) + if self.playerLiveSkeletonGraphic then + if self.PlayerLiveViewData.ride and self.PlayerLiveViewData.ride > 0 then + if self.rideLivSkeletonGraphic then + self.rideLivSkeletonGraphic.AnimationState.Complete = self.rideLivSkeletonGraphic.AnimationState.Complete + idleFunc + end + else + self.playerLiveSkeletonGraphic.AnimationState.Complete = self.playerLiveSkeletonGraphic.AnimationState.Complete + idleFunc + end + end +end +--设置位置 +function PlayerLiveView:SelectRenPos(ChapterRolePosition,localScaleVer,_parent) + if self.liveParent then + self.liveParent:SetActive(true) + if _parent then + self.liveParent.transform:SetParent(_parent.transform) + end + self.liveParent.transform.localScale = Vector3.New(localScaleVer[1],localScaleVer[2],1) + self.liveParent:GetComponent("RectTransform").anchoredPosition3D = Vector3.New(ChapterRolePosition[1], ChapterRolePosition[2], 10) + end +end + +-- 走动 传 起始位置 和 目标位置 +function PlayerLiveView:SetRoleWalk(_pos,_tagerPos,_fun) + local pos = _pos + local targetPos = _tagerPos + local speed = 5 -- 越大越慢 到时候 会读表 + self.liveParent.transform:DOLocalMove(targetPos, speed / 5, false):OnStart(function () + PlayerLiveView:SetRoleDirAction(targetPos.x, targetPos.y, pos.x, pos.y) + end):OnUpdate(function() --TODO:测试速度 + + end):OnComplete(function () + Log("行走完毕") + if self.rideLive then + self.rideLivSkeletonGraphic.AnimationState:SetAnimation(0, "idle", true) + else + self.playerLiveSkeletonGraphic.AnimationState:SetAnimation(0, "idle", true) + end + if _fun then + _fun() + _fun = nil + end + end):SetEase(Ease.Linear) +end + +function PlayerLiveView:SetRoleDirAction(targetU, targetV, u0, v0) + local dU = targetU - u0 + local dV = targetV - v0 + if dU > 0 then + PlayerLiveView:SetWalkDir(WALK_DIR.RUN_RIGHT) + elseif dU < 0 then + PlayerLiveView:SetWalkDir(WALK_DIR.RUN_LEFT) + elseif dV < 0 then + PlayerLiveView:SetWalkDir(WALK_DIR.RUN_UP) + elseif dV > 0 then + PlayerLiveView:SetWalkDir(WALK_DIR.RUN_DOWN) + end +end return PlayerLiveView \ No newline at end of file