赞 | 0 |
VIP | 0 |
好人卡 | 3 |
积分 | 1 |
经验 | 5576 |
最后登录 | 2017-5-20 |
在线时间 | 246 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 246 小时
- 注册时间
- 2008-8-6
- 帖子
- 99
|
我发个脚本版的吧。
在 Main 之前建立脚本页,挺入以下:- class Game_Character
- attr_accessor :move_target # 移动的目标事件
- # 启动移动到目标
- def startMoveTo(event)
- @move_target = event
- @move_type = 4
- end
- #--------------------------------------------------------------------------
- # ● 计算距离事件的横向距离
- #--------------------------------------------------------------------------
- def distance_x_from_event(event)
- sx = @x - event.x
- if $game_map.loop_horizontal? # 横向循环的场合
- if sx == 1 - $game_map.width
- sx += $game_map.width
- elsif sx.abs > $game_map.width / 2 # 是否大于地图宽度
- sx -= $game_map.width # 减除地图宽度
- end
- end
- return sx
- end
- #--------------------------------------------------------------------------
- # ● 计算距离事件的纵向距离
- #--------------------------------------------------------------------------
- def distance_y_from_event(event)
- sy = @y - event.y
- if $game_map.loop_vertical? # 纵像循环的场合
- if sy == 1 - $game_map.height
- sy += $game_map.height
- elsif sy.abs > $game_map.height / 2 # 是否大于地图高度
- sy -= $game_map.height # 减除地图高度
- end
- end
- return sy
- end
- #--------------------------------------------------------------------------
- # ● 接近事件
- #--------------------------------------------------------------------------
- def move_toward_event(event)
- sx = distance_x_from_event(event)
- sy = distance_y_from_event(event)
- sx += $game_map.width * 2 if $game_map.loop_horizontal? and sx < - $game_map.width and sx > - $game_map.width * 2
- sy += $game_map.height * 2 if $game_map.loop_vertical? and sy < - $game_map.height and sy > - $game_map.height * 2
- 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 update_self_movement
- if @stop_count > 30 * (5 - @move_frequency)
- case @move_type
- when 1; move_type_random
- when 2; move_type_toward_player
- when 3; move_type_custom
- when 4: move_toward_event(@move_target)
- end
- end
- end
- end
复制代码 然后,打开工程,建立事件 001 和 002 设置如图所示
事件 001:追其他事件的事件
其中的脚本为:- me = get_character(0) # 获取当前事件
- target = $game_variables[1] # 获取目标(在1号变量中)
- me.startMoveTo(target) if target != nil and target.is_a?(Game_Character)
复制代码 再建立事件 002 : 被追的事件
开始后,与事件 002 对话就是了。这里用到 1号变量和1号开关 ,你可以自己改
PS: 我要好人卡
|
|