赞 | 0 |
VIP | 5 |
好人卡 | 14 |
积分 | 15 |
经验 | 110639 |
最后登录 | 2015-10-15 |
在线时间 | 1157 小时 |
Lv3.寻梦者 小柯的徒弟
- 梦石
- 0
- 星屑
- 1535
- 在线时间
- 1157 小时
- 注册时间
- 2008-5-24
- 帖子
- 3085
|
class Game_Character
def move_type_toward_character(event_id)
# 求得与主角坐标的差
sx = @x - $game_map.events[event_id].x
sy = @y - $game_map.events[event_id].y
# 求得差的绝对值
abs_sx = sx > 0 ? sx : -sx
abs_sy = sy > 0 ? sy : -sy
# 如果纵横共计离开 20 个元件
if sx + sy >= 20
# 随机
move_random
return
end
# 随机 0~5 的分支
case rand(6) #——————————————————————可以更改
when 0..3 # 接近主角
move_toward_character(event_id)
when 4 # 随机
move_random
when 5 # 前进一步
move_forward
end
end
def move_toward_character(event_id)
# 求得与主角的坐标差
sx = @x - $game_map.events[event_id].x
sy = @y - $game_map.events[event_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
↓看不清楚请点击~
【移动规则】:自定义——【移动路线】——【脚本】:
move_type_toward_character(2)
(括号中的数字是 跟随事件的编号)
如果觉得跟的人整天乱走,把【case rand(6)】(你翻下就知道在哪)
改为【case rand(4)】。那么就完全跟紧。 |
|