#--------------------------------------------------------------------------
# ● 移动类型 : 接近x,y这一点
#--------------------------------------------------------------------------
def move_type_toward(w,r)
sx = @x - w
sy = @y - r
if sx.abs + sy.abs >= 20
move_random
else
case rand(6)
when 0..3; move_toward(w,r)
when 4; move_random
when 5; move_forward
end
end
end
def move_toward(wx,wy)
sx = distance_x_from(wx)
sy = distance_y_from(wy)
if sx != 0 or sy != 0
if sx.abs > sy.abs # 如果横向距离长
sx > 0 ? move_left : move_right # 左右方向优先
if @move_failed and sy != 0
sy > 0 ? move_up : move_down
end
else # 如果纵向距离等长
sy > 0 ? move_up : move_down # 上下方向优先
if @move_failed and sx != 0
sx > 0 ? move_left : move_right
end
end
end
end
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
def distance_x_from(r)
sx = @x - r
if $game_map.loop_horizontal? # 是否横向循环
if sx.abs > $game_map.width / 2 # 绝对值是否大于地图的一半?
sx -= $game_map.width # 引用地图的宽度
end
end
return sx
end
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
def distance_y_from(w)
sy = @y - w
if $game_map.loop_vertical? # 是否纵向循环
if sy.abs > $game_map.height / 2 # 绝对值是否大于地图的一半?
sy -= $game_map.height # 引用地图的高度
end
end
return sy
end