2017年6月7日
推出碰撞过滤器插件
对于使用 Corona 内置 Box2D 物理系统的游戏设计师来说,**碰撞过滤器** 通常会在开发的某个阶段进入设计方程。例如,如果你的无尽跑酷游戏中的玩家应该收集能量道具,你需要一个碰撞处理程序 - 但处理 *敌人* 和能量道具之间的碰撞是浪费时间(和处理能力)的。
传统上,设置碰撞过滤器一直是一件棘手的事情,需要计算 categoryBits
和 maskBits
,正如我们在 碰撞检测 指南中概述的那样。虽然我们的“助手图表”使这个过程容易得多,但许多游戏开发人员希望有一种更简单的方法 - 现在有了!
碰撞过滤器插件
使用新的 碰撞过滤器 插件,你可以跳过传统碰撞过滤器设置中涉及的所有数学和计算。相反,只需使用清晰命名的键和字符串来声明你的设置。例如
collisionFilters.setupFilters( { player={ "powerUps", "enemies" } } )
仅使用这一个简单的命令,插件将配置三个碰撞过滤器
player
对象将与powerUps
和enemies
碰撞powerUps
对象只会与player
碰撞enemies
对象只会与player
碰撞
设置完成后,获取正确的碰撞过滤器数据就像使用配置表中的有效键或字符串调用 collisionFilters.getFilter() 一样简单
local playerFilter = collisionFilters.getFilter( "player" )
然后,将其应用到玩家的物理身体上,假设 thisPlayer
代表玩家对象,就像这样简单
physics.addBody( thisPlayer, "dynamic", { filter=playerFilter } )
智能关联
对于那些以传统方式设置碰撞过滤器的人来说,你会知道这样做需要一种“反向关联”方法。例如,如果你告诉 Box2D player
可以与 enemies
碰撞,你**还必须**告诉它 enemies
可以与 player
碰撞。现在,使用 碰撞过滤器 插件,这个额外的步骤是不必要的 - 只需设置你的主要关联,插件将内部计算反向关系!更重要的是,如果你意外地声明了不匹配的关联,它将发出控制台警告。
开始入门
要开始入门,请转到 插件文档。只需将插件添加到你的 build.settings
文件,在你要使用的模块中使用 require()
它,使用 collisionFilters.setupFilters() 设置你的过滤器关系,并通过 collisionFilters.getFilter() 将适当的过滤器添加到你的物理身体。
希望这个新插件将简化所有 Corona 游戏开发人员的碰撞过滤器设置!
抱歉,此时评论表单已关闭。