源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 rivejä
1.5 KiB

4 viikkoa sitten
  1. NowOperateTargetMove = NowOperateTargetMove or BaseClass(NowOperateMove)
  2. local NowOperateTargetMove = NowOperateTargetMove
  3. function NowOperateTargetMove:__init(start_time, start_pos, end_pos, target, range,scene_obj)
  4. NowOperateMove.__init(self, start_time, start_pos, end_pos,false,scene_obj)
  5. self.target= target
  6. self.range = range
  7. self.scene_obj = scene_obj
  8. --每隔一段时间重新检测路径
  9. self.check_time_delta = 1
  10. self.check_time = Status.NowTime
  11. --print("NowOperateTargetMove:__init", self.check_time)
  12. end
  13. function NowOperateTargetMove:ExcuteImpl(elaspe_time)
  14. local scene_obj = self.scene_obj or Scene.Instance:GetMainRole()
  15. --每隔一段时间重新检测路径,所以可以停止当前路径
  16. if Status.NowTime - self.check_time >= self.check_time_delta then
  17. scene_obj:WaitForNextMove() --会有抖动
  18. self.is_end = true
  19. --print("NowOperateTargetMove:ExcuteImpl Stop Cur path 1", Status.NowTime, self.check_time)
  20. return true
  21. end
  22. --如果与目标的距离达到范围内,也要停止当前路径
  23. local x1, y1 = scene_obj:GetRealPos()
  24. local x2, y2 = self.target:GetRealPos()
  25. --local dir = co.Vector2(x2-x1, y2-y1)
  26. -- local distance = dir:length()
  27. local distance = GameMath.GetDistance(x1, y1, x2, y2, false)
  28. --距离在可动作范围内
  29. local d = (self.range > 5) and (self.range - 5) or self.range
  30. if distance < d * d then
  31. scene_obj:WaitForNextMove()
  32. self.is_end = true
  33. --print("NowOperateTargetMove:ExcuteImpl Stop Cur path 2", distance)
  34. return true
  35. end
  36. return NowOperateMove.ExcuteImpl(self, elaspe_time)
  37. end