赞 | 1 |
VIP | 255 |
好人卡 | 52 |
积分 | 1 |
经验 | 77416 |
最后登录 | 2016-1-18 |
在线时间 | 1269 小时 |
Lv1.梦旅人 薄凉看客
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 1269 小时
- 注册时间
- 2010-6-20
- 帖子
- 1316
|
本帖最后由 恐惧剑刃 于 2014-8-20 08:10 编辑
设置一个怪物,
移动规则 => 自定义 => 脚本
toward(nil, 5) # 怪物会接近主角,5是距离
toward(3, 5) # 怪物会接近事件,3是事件的id、5是距离
5是距离
并且main前插入- class Game_Character
- def toward(id = nil, t = 5)
- if id.nil?
- if (@x - $game_player.x).abs <= t and (@y - $game_player.y).abs <= t
- if (@x - $game_player.x == 0 and @y - $game_player.y == 1) or
- (@x - $game_player.x == 1 and @y - $game_player.y == 0)
- return
- end
-
- move_toward_player
- else
- move_random if rand(100) < 25
- end
- else
- if (@x - $game_map.events[id].x).abs <= t and
- (@y - $game_map.events[id].y).abs <= t
- if (@x - $game_map.events[id].x == 0 and @y - $game_map.events[id].y == 1) or
- (@x - $game_map.events[id].x == 1 and @y - $game_map.events[id].y == 0)
- return
- end
-
- move_toward_event(id)
- else
- move_random if rand(100) < 25
- end
- end
- end
- def move_toward_event(id)
- # 求得与主角的坐标差
- sx = @x - $game_map.events[id].x
- sy = @y - $game_map.events[id].y
- # 坐标相等情况下
- if sx == 0 and sy == 0
- return
- end
- # 求得差的绝对值
- abs_sx = sx.abs
- abs_sy = sy.abs
- # 横距离与纵距离相等的情况下
- if abs_sx == abs_sy
- # 随机将边数增加 1
- rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
- end
- # 横侧距离长的情况下
- if abs_sx > abs_sy
- # 左右方向优先。向主角移动
- sx > 0 ? move_left : move_right
- if not moving? and sy != 0
- sy > 0 ? move_up : move_down
- end
- # 竖侧距离长的情况下
- else
- # 上下方向优先。向主角移动
- sy > 0 ? move_up : move_down
- if not moving? and sx != 0
- sx > 0 ? move_left : move_right
- end
- end
- end
- end
复制代码 |
评分
-
查看全部评分
|