查看: 2507|回复: 13

怎样让一个NPC跟随另一个随机移动的NPC走呢?

  [复制链接]
头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-5-29
回帖
38
发表于 2009-5-30 00:50:52 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-7-18
回帖
299
发表于 2009-5-30 01:24:44 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

小柯的徒弟

梦石
0
星屑
1925
在线时间
1157 小时
注册时间
2008-5-24
回帖
2994

贵宾

发表于 2009-5-30 01:41:16 | 显示全部楼层
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)】。那么就完全跟紧。
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-5-29
回帖
38
 楼主| 发表于 2009-5-30 01:53:55 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报


梦石
0
星屑
89
在线时间
24 小时
注册时间
2006-5-27
回帖
11195

贵宾

发表于 2009-5-30 02:00:04 | 显示全部楼层
以下引用snowball1981于2009-5-29 17:53:55的发言:
我创建事件,插入脚本,可是无法粘贴上面的脚本代码。
请问这些脚本代码放在哪里呢?还是我要亲自打上去?
粘贴前请先确定光标在右边的文本框内……
直接点击插入时,光标会在左边的脚本标题里。想要在短短的标题里粘上全部脚本,真是难为电脑了呢。
回复

使用道具 举报

小柯的徒弟

梦石
0
星屑
1925
在线时间
1157 小时
注册时间
2008-5-24
回帖
2994

贵宾

发表于 2009-5-30 02:00:37 | 显示全部楼层

↑设置成这样,然后点击【移动路线】


↑右下角的【脚本】功能。插入move_type_toward_character(2)
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-5-29
回帖
38
 楼主| 发表于 2009-5-30 02:18:16 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

梦石
0
星屑
7095
在线时间
1666 小时
注册时间
2008-10-29
回帖
6612

贵宾

发表于 2009-5-30 02:45:34 | 显示全部楼层
以下引用snowball1981于2009-5-29 18:18:16的发言:

我没弄明白。
把脚本复制进去,然后按钮照做后,感觉怪怪的。
我的意思是:
人物 A 有固定路线 X ,人物B紧跟随人物 A 走路线 X 。
另外人物 C 有固定路线 Y ,人物 D 紧跟随人物 C 走路线 Y 。
地图上还人物 E 走固定路线 Z ,人物 F、G、H 跟随人物 E 走固定路线 Z 。

不是说要随机吗 怎么又变固定了{/fd}











你知道得太多了

回复

使用道具 举报

小柯的徒弟

梦石
0
星屑
1925
在线时间
1157 小时
注册时间
2008-5-24
回帖
2994

贵宾

发表于 2009-5-30 03:45:51 | 显示全部楼层
以下引用snowball1981于2009-5-29 18:18:16的发言:

我没弄明白。
把脚本复制进去,然后按钮照做后,感觉怪怪的。
我的意思是:
人物 A 有固定路线 X ,人物B紧跟随人物 A 走路线 X 。
另外人物 C 有固定路线 Y ,人物 D 紧跟随人物 C 走路线 Y 。
地图上还人物 E 走固定路线 Z ,人物 F、G、H 跟随人物 E 走固定路线 Z 。

第二个图的不用模仿- -b

只保留【脚本:move_type_toward_character(2)】就可以了。

华丽的范例{/gg}
http://rpg.blue/upload_program/d/「旅」_Project3_124055125.rar
回复

使用道具 举报

B

梦石
0
星屑
50
在线时间
26 小时
注册时间
2007-8-26
回帖
3622
发表于 2009-5-30 04:25:36 | 显示全部楼层
pinbi
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部