设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1666|回复: 4
打印 上一主题 下一主题

[已经解决] 求助:怎样制作吸引怪物的事件,做了好久都不行。。

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
6 小时
注册时间
2014-7-24
帖子
14
跳转到指定楼层
1
发表于 2014-8-20 02:54:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
1.吸引怪物,就是说当走到怪物面前一段距离或者周围的时候这个怪物就会来追你,如果跑离怪物一段距离就不追你了(就类似于仙剑3、4、5等等可以吸引怪物的)。
求助!这个应该怎么做。。。。
2.对于上述问题我有一种方案,设置独立开关,可是出现了错误:当怪物已经被吸引以后(独立开关打开以后)却还是随便走,没有接近。{:2_264:}
怪物事件的两个事件页如图:

测试结果:B开关打开以后,怪物也不会改为接近状态。。。

然后怎么弄都做不成功,都快崩溃了。。。{:8_462:}
求解决方案或者其他能够实现吸引怪物的方案,小妹在此谢过了~~

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
2
发表于 2014-8-20 07:36:16 | 只看该作者
本帖最后由 恐惧剑刃 于 2014-8-20 08:10 编辑

设置一个怪物,
移动规则 => 自定义 => 脚本
toward(nil, 5) # 怪物会接近主角,5是距离

toward(3, 5) # 怪物会接近事件,3是事件的id、5是距离

5是距离

并且main前插入
  1. class Game_Character
  2.   def toward(id = nil, t = 5)
  3.     if id.nil?
  4.       if (@x - $game_player.x).abs <= t and (@y - $game_player.y).abs <= t
  5.         if (@x - $game_player.x == 0 and @y - $game_player.y == 1) or
  6.           (@x - $game_player.x == 1 and @y - $game_player.y == 0)
  7.           return
  8.         end
  9.         
  10.         move_toward_player
  11.       else
  12.         move_random if rand(100) < 25
  13.       end
  14.     else
  15.       if (@x - $game_map.events[id].x).abs <= t and
  16.         (@y - $game_map.events[id].y).abs <= t
  17.         if (@x - $game_map.events[id].x == 0 and @y - $game_map.events[id].y == 1) or
  18.           (@x - $game_map.events[id].x == 1 and @y - $game_map.events[id].y == 0)
  19.           return
  20.         end
  21.         
  22.         move_toward_event(id)
  23.       else
  24.         move_random if rand(100) < 25
  25.       end
  26.     end
  27.   end
  28.   def move_toward_event(id)
  29.     # 求得与主角的坐标差
  30.     sx = @x - $game_map.events[id].x
  31.     sy = @y - $game_map.events[id].y
  32.     # 坐标相等情况下
  33.     if sx == 0 and sy == 0
  34.       return
  35.     end
  36.     # 求得差的绝对值
  37.     abs_sx = sx.abs
  38.     abs_sy = sy.abs
  39.     # 横距离与纵距离相等的情况下
  40.     if abs_sx == abs_sy
  41.       # 随机将边数增加 1
  42.       rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
  43.     end
  44.     # 横侧距离长的情况下
  45.     if abs_sx > abs_sy
  46.       # 左右方向优先。向主角移动
  47.       sx > 0 ? move_left : move_right
  48.       if not moving? and sy != 0
  49.         sy > 0 ? move_up : move_down
  50.       end
  51.     # 竖侧距离长的情况下
  52.     else
  53.       # 上下方向优先。向主角移动
  54.       sy > 0 ? move_up : move_down
  55.       if not moving? and sx != 0
  56.         sx > 0 ? move_left : move_right
  57.       end
  58.     end
  59.   end
  60. end
复制代码

评分

参与人数 1星屑 +200 收起 理由
RyanBern + 200 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

菜鸟飞呀飞 该用户已被删除
3
发表于 2014-8-20 09:24:53 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
6 小时
注册时间
2014-7-24
帖子
14
4
 楼主| 发表于 2014-8-20 15:51:03 | 只看该作者
解决了,谢谢大家
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
206 小时
注册时间
2014-2-8
帖子
396
5
发表于 2014-8-20 22:35:38 | 只看该作者
判断XY坐标的差判断他的行动是随机还是接近么,做到并行事件里去,有点麻烦,每有一只怪物就做一个判断,怪物用固定位置和频率6
刚接触RPG的新人们裤艾来这里!在这里能够帮助你们提高自身的能力,让大家来帮助每个人实现自己的创意、构想!
也许你只是正在看RPG教程的新人,或者是正在努力学着制作自己的RPG的制作者,或者是狂热的RPG游戏喜爱者,
但都不重要!
加入我们,我们会帮助你实现梦想,或者帮助你更好的运用RPG并且创造个人的一片天地!周末我们会不定时间开放RM技术讨论活动或者RM经验交流课!
加入我们,我们愿意与你共同创造奇迹,共同进步!
QQ群号:329443038  
或者联系QQ:573932914
我们和你站在同一线!
要求只有:常能上线
我们会用十分的热情接纳你!
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-19 00:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表