| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- local MinePlayerEntity = class("MinePlayerEntity", require("PlayerEntity"))
- local MinePlayerEntityView = require("MinePlayerEntityView")
- function MinePlayerEntity:ctor()
- self.intervalTime = nil
- self.stayIntervalTime = nil
- end
- function MinePlayerEntity:Dispose()
- self.intervalTime = nil
- self.stayIntervalTime = nil
- MinePlayerEntity.super.Dispose(self)
- end
- function MinePlayerEntity:EnterMap()
- self.view = MinePlayerEntityView:new(self.uid, self.pos, self.rot)
- self:SetForceCheckTrigger()
- MinePlayerEntity.super.EnterMap(self)
- end
- function MinePlayerEntity:OnJoystickDrag(dir, state)
- if state <= 0 then
- self:StopMove()
- return
- end
- self.moveDir:Set(dir.x, 0, dir.y)
- self.moveState = state
- self.moveSpeed = self:GetMoveSpeed(state)
- self.moveRot = Quaternion.LookRotation(self.moveDir)
- end
- function MinePlayerEntity:Update(deltaTime)
- if self.moveState > 0 then
- local newPos = LuaBattleBridge.GetCanMovePoint(self.pos, self.moveDir, self.moveSpeed * deltaTime)
- local needSend = (not self.pos:Equals(newPos))
- self.pos = newPos
- self.rot = Quaternion.Slerp(self.rot, self.moveRot, self:GetTurnSpeed() * deltaTime)
- if needSend then
- self.isForceCheckTrigger = true
- end
- if self.intervalTime == nil and needSend then
- self.intervalTime = self:GetSyncPosIntervalTime()
- end
- if self.intervalTime ~= nil then
- self.intervalTime = self.intervalTime - deltaTime
- if self.intervalTime <=0 then
- ManagerContainer.LuaGuildLobbyMgr:SendMoveCmdReq(self.pos)
- self.intervalTime = self:GetSyncPosIntervalTime() + self.intervalTime
- if not needSend then
- self.intervalTime = nil
- self.stayIntervalTime = nil
- end
- end
- end
- else
- if self.intervalTime ~= nil then
- self.intervalTime = self.intervalTime - deltaTime
- if self.intervalTime <= 0 then
- ManagerContainer.LuaGuildLobbyMgr:SendMoveCmdReq(self.pos)
- self.intervalTime = nil
- self.stayIntervalTime = nil
- end
- else
- if self.stayIntervalTime == nil then
- self.stayIntervalTime = self:GetSyncStayPosIntervalTime()
- end
- self.stayIntervalTime = self.stayIntervalTime - deltaTime
- if self.stayIntervalTime <= 0 then
- ManagerContainer.LuaGuildLobbyMgr:SendMoveCmdReq(self.pos)
- self.stayIntervalTime = self:GetSyncStayPosIntervalTime() + self.stayIntervalTime
- end
- end
- end
- if self.isForceCheckTrigger then
- self:CheckTrigger()
- end
- MinePlayerEntity.super.Update(self, deltaTime)
- end
- -- 检测是否到了npc的事件触发区域内
- function MinePlayerEntity:CheckTrigger()
- end
- function MinePlayerEntity:SetForceCheckTrigger()
- self.isForceCheckTrigger = true
- end
- return MinePlayerEntity
|