MinePlayerEntity.lua 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. local MinePlayerEntity = class("MinePlayerEntity", require("PlayerEntity"))
  2. local MinePlayerEntityView = require("MinePlayerEntityView")
  3. function MinePlayerEntity:ctor()
  4. self.intervalTime = nil
  5. self.stayIntervalTime = nil
  6. end
  7. function MinePlayerEntity:Dispose()
  8. self.intervalTime = nil
  9. self.stayIntervalTime = nil
  10. MinePlayerEntity.super.Dispose(self)
  11. end
  12. function MinePlayerEntity:EnterMap()
  13. self.view = MinePlayerEntityView:new(self.uid, self.pos, self.rot)
  14. self:SetForceCheckTrigger()
  15. MinePlayerEntity.super.EnterMap(self)
  16. end
  17. function MinePlayerEntity:OnJoystickDrag(dir, state)
  18. if state <= 0 then
  19. self:StopMove()
  20. return
  21. end
  22. self.moveDir:Set(dir.x, 0, dir.y)
  23. self.moveState = state
  24. self.moveSpeed = self:GetMoveSpeed(state)
  25. self.moveRot = Quaternion.LookRotation(self.moveDir)
  26. end
  27. function MinePlayerEntity:Update(deltaTime)
  28. if self.moveState > 0 then
  29. local newPos = LuaBattleBridge.GetCanMovePoint(self.pos, self.moveDir, self.moveSpeed * deltaTime)
  30. local needSend = (not self.pos:Equals(newPos))
  31. self.pos = newPos
  32. self.rot = Quaternion.Slerp(self.rot, self.moveRot, self:GetTurnSpeed() * deltaTime)
  33. if needSend then
  34. self.isForceCheckTrigger = true
  35. end
  36. if self.intervalTime == nil and needSend then
  37. self.intervalTime = self:GetSyncPosIntervalTime()
  38. end
  39. if self.intervalTime ~= nil then
  40. self.intervalTime = self.intervalTime - deltaTime
  41. if self.intervalTime <=0 then
  42. ManagerContainer.LuaGuildLobbyMgr:SendMoveCmdReq(self.pos)
  43. self.intervalTime = self:GetSyncPosIntervalTime() + self.intervalTime
  44. if not needSend then
  45. self.intervalTime = nil
  46. self.stayIntervalTime = nil
  47. end
  48. end
  49. end
  50. else
  51. if self.intervalTime ~= nil then
  52. self.intervalTime = self.intervalTime - deltaTime
  53. if self.intervalTime <= 0 then
  54. ManagerContainer.LuaGuildLobbyMgr:SendMoveCmdReq(self.pos)
  55. self.intervalTime = nil
  56. self.stayIntervalTime = nil
  57. end
  58. else
  59. if self.stayIntervalTime == nil then
  60. self.stayIntervalTime = self:GetSyncStayPosIntervalTime()
  61. end
  62. self.stayIntervalTime = self.stayIntervalTime - deltaTime
  63. if self.stayIntervalTime <= 0 then
  64. ManagerContainer.LuaGuildLobbyMgr:SendMoveCmdReq(self.pos)
  65. self.stayIntervalTime = self:GetSyncStayPosIntervalTime() + self.stayIntervalTime
  66. end
  67. end
  68. end
  69. if self.isForceCheckTrigger then
  70. self:CheckTrigger()
  71. end
  72. MinePlayerEntity.super.Update(self, deltaTime)
  73. end
  74. -- 检测是否到了npc的事件触发区域内
  75. function MinePlayerEntity:CheckTrigger()
  76. end
  77. function MinePlayerEntity:SetForceCheckTrigger()
  78. self.isForceCheckTrigger = true
  79. end
  80. return MinePlayerEntity