|
|
- NowOperateTargetMove = NowOperateTargetMove or BaseClass(NowOperateMove)
- local NowOperateTargetMove = NowOperateTargetMove
- function NowOperateTargetMove:__init(start_time, start_pos, end_pos, target, range,scene_obj)
- NowOperateMove.__init(self, start_time, start_pos, end_pos,false,scene_obj)
-
- self.target= target
- self.range = range
- self.scene_obj = scene_obj
- --每隔一段时间重新检测路径
- self.check_time_delta = 1
- self.check_time = Status.NowTime
- --print("NowOperateTargetMove:__init", self.check_time)
- end
-
-
- function NowOperateTargetMove:ExcuteImpl(elaspe_time)
- local scene_obj = self.scene_obj or Scene.Instance:GetMainRole()
-
- --每隔一段时间重新检测路径,所以可以停止当前路径
- if Status.NowTime - self.check_time >= self.check_time_delta then
- scene_obj:WaitForNextMove() --会有抖动
- self.is_end = true
- --print("NowOperateTargetMove:ExcuteImpl Stop Cur path 1", Status.NowTime, self.check_time)
- return true
- end
-
- --如果与目标的距离达到范围内,也要停止当前路径
- local x1, y1 = scene_obj:GetRealPos()
- local x2, y2 = self.target:GetRealPos()
-
- --local dir = co.Vector2(x2-x1, y2-y1)
- -- local distance = dir:length()
- local distance = GameMath.GetDistance(x1, y1, x2, y2, false)
- --距离在可动作范围内
- local d = (self.range > 5) and (self.range - 5) or self.range
- if distance < d * d then
- scene_obj:WaitForNextMove()
- self.is_end = true
- --print("NowOperateTargetMove:ExcuteImpl Stop Cur path 2", distance)
- return true
- end
-
- return NowOperateMove.ExcuteImpl(self, elaspe_time)
- end
|