【发布时间】:2014-06-25 07:38:42
【问题描述】:
我有一个粒子发射器,我想在粒子碰撞一些物理物体时检测它。 在 SpriteKit API 中是否有本地方法可以做到这一点,还是我需要“作弊”?
【问题讨论】:
标签: sprite-kit
我有一个粒子发射器,我想在粒子碰撞一些物理物体时检测它。 在 SpriteKit API 中是否有本地方法可以做到这一点,还是我需要“作弊”?
【问题讨论】:
标签: sprite-kit
单个粒子不能碰撞。不是物理,不是任何其他方式。您甚至无法获得有关单个粒子的任何信息 - 您无法访问它的位置、旋转、速度……什么都没有。
如果您想“作弊”,则必须使用精灵模拟粒子发射器,并使用动作或手动为精灵设置动画。但是请记住,这比粒子发射器的效率要低得多。
此外,如果我们谈论的“粒子”通常意味着屏幕上的数十个甚至数百个粒子,那么如果您要使用附加了物理实体的 sprite 对它们进行建模,那么物理处理和碰撞检测的数量很快就会变得非常昂贵.在你走这条路之前做一个性能测试。
【讨论】:
粒子没有物理实体,因此它们不会与 Sprite Kit 的物理引擎发生碰撞
【讨论】:
您可以设置粒子发射器的物理体,就像为任何精灵节点设置它一样。然后您可以设置类别位掩码属性和接触测试位掩码。 didBeganContact 方法可以在之后检测到碰撞。
【讨论】:
每当两个物体相互接触时,就会调用didBegan contact。这是此方法如何工作的苹果参考链接:
点击[这里](https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKPhysicsContactDelegate_Ref/Reference/Reference.html#//apple_ref/occ/intfm/SKPhysicsContactDelegate/didBeginContact:"Apple iOS 开发者库")!
【讨论】: