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

Project1

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

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

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
105 小时
注册时间
2009-7-25
帖子
201
跳转到指定楼层
1
发表于 2009-7-30 14:52:34 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

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

Lv1.梦旅人

v

梦石
0
星屑
50
在线时间
55 小时
注册时间
2007-12-19
帖子
99
3
发表于 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一下大概就可以了吧
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
619
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 20:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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