查看: 2190|回复: 2

[已经解决] 两个事件块之间碰撞怎么做?

  [复制链接]
梦石
0
星屑
50
在线时间
105 小时
注册时间
2009-7-25
回帖
166
发表于 2009-7-30 14:52:34 | 显示全部楼层 |阅读模式

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

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

×
比如我想让任意两个敌人碰到了(相邻)就触发事件怎么做
难道要用变量记录每个敌人的坐标,然后计算?

八云紫的式神<

梦石
0
星屑
833
在线时间
1260 小时
注册时间
2008-1-1
回帖
3889

烫烫烫

发表于 2009-8-4 07:31:34 | 显示全部楼层
对,RM没有提供事件块与事件块的判定
因为计算量比较大,所以算法要考虑好不然会很卡
或者写成脚本,效率比事件高一些
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复

使用道具 举报

v

梦石
0
星屑
50
在线时间
55 小时
注册时间
2007-12-19
回帖
97
发表于 2009-8-5 17:19:25 | 显示全部楼层
在Game_Character的collide_with_characters?的for循环那里可以加入对event种类的判断
  1.     for event in $game_map.events_xy(x, y)          # 匹配事件块的方位
  2.       unless event.through                          # 关闭"事件块可穿透"?
  3.         return true if self.is_a?(Game_Event)       # 自己就是个事件块
  4.         return true if event.priority_type == 1     # 目标是普通事件块
  5.       end
  6.     end
复制代码
判断的话可以用事件名字,注释之类的。

如果不想循环每个事件(虽然RM每帧都循环所有事件很多次),参考以下关键字:
nearest neighbor search
metric tree
locality sensitive hashing
等等。
不过RM的地图大小很有限,把每个事件按坐标hash一下大概就可以了吧
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部