我正在使用 SpriteKit 的碰撞检测。它有一个如下所示的回调:
- (void)didBeginContact:(SKPhysicsContact *)contact
接触对象有两个物理体:
SKPhysicsBody *bodyA;
SKPhysicsBody *bodyB;
我的游戏会有很多对象,当然我可以测试一下categoryBitMask
,看看什么和什么发生了碰撞。但是考虑到我打算有很多种类(当然不超过 32 种)并且可能会动态引入新类型,那么进行动态双重调度以编码碰撞、爆炸、得分等逻辑的最优雅的方法是什么?从所有这些碰撞中?当然,我可以构建一个巨大的毛茸茸的 if 语句,但我希望有更干净的东西。
也许一个查找表存储适当的处理程序的选择器?然后我通过某种组合来索引查找表categoryBitMasks
?我很想听听一些建议。