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

Project1

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

[已经解决] 如何让一个事件在指定范围内辨识其他事件?

[复制链接]

Lv1.梦旅人 (暗夜天使)

梦石
0
星屑
55
在线时间
473 小时
注册时间
2014-5-28
帖子
419
跳转到指定楼层
1
发表于 2014-7-29 00:11:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
 

如何让一个事件周围的一个矩形范围内侦测其他事件是否经过  (能设定菱形、圆形等其他形状更好)

可以在其他事件经过时打开1号开关或自用开关A、离开时关闭之类


并且可以调整设定范围的大小  (以该事件为中心的3*3、5*5或以上的矩形)


我试过用一并行处理的事件以每个事件的座标对变量赋值

不过这样需要使用到非常多的变量 (事件数量很多) 扩展性不佳


有什么更好的方法吗? 事件、脚本不限


 

点评

VIP君不是在你们制作组里吗?  发表于 2014-7-29 07:04

Lv4.逐梦者 (版主)

聪仔

梦石
0
星屑
6182
在线时间
3077 小时
注册时间
2013-12-26
帖子
3145
2
发表于 2014-7-29 19:34:51 | 只看该作者
有事件进入区域的话,游戏画面会变量,开关1打开,否则就关闭...
这是范例...
Project3.rar (1.42 MB, 下载次数: 84)
聪聪全国第三帅...
他们都叫我【人赢聪】
我的RM能力雷达图:

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

聪仔

梦石
0
星屑
6182
在线时间
3077 小时
注册时间
2013-12-26
帖子
3145
3
发表于 2014-7-29 22:42:30 | 只看该作者
以上只做了范例,没有补充说明,现在补充一下...

首先设置一个区域,形状随意,不局限于矩形...


关键的脚本是这样的...


下面是几个“1”的解释...
$game_switches[1]的1表示开关1随区域内是否事件开启和关闭...
i[1]这个1不用管它,统一写1,这是由Hash本身的性质决定的...
== 1这个1是表示判定区域是区域1,如果你是用区域2作判定,则要改成2...
最后是效果截图...

聪聪全国第三帅...
他们都叫我【人赢聪】
我的RM能力雷达图:

回复 支持 反对

使用道具 举报

Lv1.梦旅人 (暗夜天使)

梦石
0
星屑
55
在线时间
473 小时
注册时间
2014-5-28
帖子
419
4
 楼主| 发表于 2014-7-30 01:10:20 | 只看该作者
本帖最后由 DivineCrow 于 2014-7-30 01:28 编辑
正太君 发表于 2014-7-29 22:42
以上只做了范例,没有补充说明,现在补充一下...

首先设置一个区域,形状随意,不局限于矩形...


这个嘛... 这样就没办法以事件为中心来探测了

想让该区域随着事件移动而移动

这是昨天想到的一个方式


这能辨识3*3范围内(不包括中心) ID为1以上的事件

侦测到其他事件后可以再开启自用开关打开另一个分页
然后重复上面那段  取得位置资讯那里则把条件分支那里改成

事件离开区域后自用开关A关闭


不过这种方式要是扩大区域  上面那段就会变得非常长 :(

你的构想也不错  给了我一些思路˙0˙

嗯...我就再等个1、2天看看有没有更好的答案吧?



@taroxd :看到@VIPArcher当上了这里的版主 于是就屁颠屁颠的跑到这里玩了:D  

点评

其实我本来想给Archer来回答的:P 不过给正太君抢先了233  发表于 2014-7-31 02:03
去叫VIPArcher写脚本呗,你的要求又不是太难的= =  发表于 2014-7-30 05:54
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

聪仔

梦石
0
星屑
6182
在线时间
3077 小时
注册时间
2013-12-26
帖子
3145
5
发表于 2014-7-30 13:01:44 | 只看该作者
重新做了一个范例... Project1.rar (1.42 MB, 下载次数: 67)
范例里的事件名中带有【正太】二字的事件只要经过怪蜀黍身边一个范围,怪蜀黍头上就会有心的心情,而其它事件无效...
事件设置及事件脚本设置请看范例中的事件【怪蜀黍】...

图中粉色的四个框里的数据是四个参数,不必更改...绿色框里的参数是可以更改的...
默认方法名【in_square】是45度倾斜正方形区域判定,要换成端正矩形的区域判定,需要把方法名改成【in_rectangle】,同时增加一个参数...参数的意义见一下脚本中的注释...
这是必须添加在脚本编辑器里的脚本,转载请注明脚本来源哦...
RUBY 代码复制
  1. #==============================================================================
  2. # 事件周围区域判定
  3. #------------------------------------------------------------------------------
  4. # 作者:正太君(聪仔)
  5. # 请保留脚本来源...
  6. # 本脚本来自rpg.blue
  7. #==============================================================================
  8.  
  9. #==============================================================================
  10. # ■ Game_Character
  11. #==============================================================================
  12. class Game_Character < Game_CharacterBase
  13.   attr_reader   :event
  14. end
  15.  
  16. module Kernel
  17.   #--------------------------------------------------------------------------
  18.   # ● 矩形  共6个参数
  19.   #--------------------------------------------------------------------------
  20.   # x、y     :进入区域的事件x、y坐标...
  21.   # ox, oy   :区域中心的事件x、y坐标...
  22.   # a        :矩形的长边减1后的一半,可理解成长轴向的半径...
  23.   # b        :矩形的短边减1后的一半,可理解成短轴向的半径...
  24.   # 例如一个7×3的矩形,a为3,b为1;端正的正方形a、b相等...
  25.   #--------------------------------------------------------------------------
  26.   def in_rectangle(x, y, ox, oy, a, b)
  27.     (x - ox).abs <= a and (y - oy).abs <= b
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 45度倾斜的正方形(或称为LZ所谓的菱形)  共5个参数
  31.   #--------------------------------------------------------------------------
  32.   # x、y     :进入区域的事件x、y坐标...
  33.   # ox, oy   :区域中心的事件x、y坐标...
  34.   # r        : 正方形的对角线长度减1后的一半,可理解成正方形的半径...
  35.   #--------------------------------------------------------------------------
  36.   def in_square(x, y, ox, oy, r)
  37.     ((x - ox) - (y - oy)).abs <= r and ((x - ox) + (y - oy)).abs <= r
  38.   end
  39. end

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 in_rectangle 啥的不放在一个命名空间里吗.

查看全部评分

聪聪全国第三帅...
他们都叫我【人赢聪】
我的RM能力雷达图:

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

聪仔

梦石
0
星屑
6182
在线时间
3077 小时
注册时间
2013-12-26
帖子
3145
6
发表于 2014-7-30 14:59:16 | 只看该作者
@taroxd 版主大人,in_rectangle放在module Kernel下面,有利于在事件脚本里直接调用呢...

点评

你脚本不都写出来了么= =  发表于 2014-7-30 16:00
版主大人好厉害呢,不用下载附件就能把所有脚本分析得如此透彻,大赞一个...  发表于 2014-7-30 15:51
好的...感谢版主大人的调♂教...  发表于 2014-7-30 15:49
233说着玩而已。不过事件里太长的脚本真的应该放在 Game_Interpreter  发表于 2014-7-30 15:47
版主大人放过我吧...我投降了呢...(举白旗...  发表于 2014-7-30 15:45
聪聪全国第三帅...
他们都叫我【人赢聪】
我的RM能力雷达图:

回复 支持 反对

使用道具 举报

Lv1.梦旅人 (暗夜天使)

梦石
0
星屑
55
在线时间
473 小时
注册时间
2014-5-28
帖子
419
7
 楼主| 发表于 2014-7-31 01:37:44 | 只看该作者
正太君 发表于 2014-7-30 13:01
重新做了一个范例...
范例里的事件名中带有【正太】二字的事件只要经过怪蜀黍身边一个范围,怪蜀黍头上就会 ...


把那种扫描方式放到脚本里

再用事件去RUN一遍  这个主意不错 ˙0˙

最重要的是还可以调整半径~ ❤

嗯 这玩意儿太棒了 感谢 ˙3˙~


话说我之前一直以为那个大叔才是怪蜀黍... 一直盯着大叔看想说怎么没效果 -3- ...呵呵
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-25 19:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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