赞 | 10 |
VIP | 15 |
好人卡 | 6 |
积分 | 16 |
经验 | 229303 |
最后登录 | 2018-3-22 |
在线时间 | 1609 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1624
- 在线时间
- 1609 小时
- 注册时间
- 2007-8-28
- 帖子
- 3253
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
#==============================================================================
# ■ Game_Character
#------------------------------------------------------------------------------
# 事件以某点为中心,随机移动。
# 080727 by 柳之一
# 使用方法:本脚本粘贴在main之上,Game_Character之下。
# 在事件的移动规则类型选择自定义
# 移动路线里面,用脚本写上:
# move_type_toward(w,r)
# w,r就是你设定的中心
#例如: move_type_toward(10,10)就是npc在10,10这个点附近移动,开始的时候你的
# 事件可以是任意位置,但是一定确保能走到,你要是走到不能移动的点,
# 我就不说什么了
#==============================================================================
class Game_Character
#--------------------------------------------------------------------------
# ● 移动类型 : 接近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
end
|
|