变形精灵直到纹理不再连续 - 如何保持接触检测?

Deforming a sprite until texture no longer contiguous - how to maintain contact -detection?

仍在开发我的 space Invaders 克隆,我想在屏幕底部添加可破坏的基地:

我已经弄清楚如何通过让炸弹和盾牌相互接触来修改盾牌的外观,然后在 didBegincontact 中,从炸弹爆炸的蒙版和当前纹理创建一个 SKCropNode屏蔽然后使用视图的 texture(from: node) 方法获取渲染纹理并从新纹理更新屏蔽的纹理和 physicsBody。

然而 - 当盾牌的中心有一个洞被炸开,使得盾牌的纹理不再连续(例如图片中最左边的盾牌),生成的 physicsBody 仅覆盖左侧纹理的一部分。因此,任何击中盾牌右侧部分的炸弹都不会被检测到。

我怎样才能让我的盾牌分成多块并保持接触检测正常工作?

可能的解决方案:

============================================= ======

更新:请参阅下文了解未拆分时精灵纹理的损坏情况。棕色底座是显示第一个损坏的原始底座(physicsBody 显示原始底座,纹理显示 dame)。绿色基地已经重新计算了它的物理体:

更新:请参阅下面的纹理拆分时的物理体。棕色是原来的盾牌,小凹痕是 'new' 伤害。 physicsBody 仅映射到图像的左侧部分。

所以我放弃了对底座的 SKTexture 进行变形,而是将底座实现为大约 30 个小块,每个小块都有自己的 physicsBody,一旦被击中,每个小块都会被完全移除。

我很关心性能,但这些都是静态块,到目前为止,性能仍然不错。整体图文效果也还可以:

我可能会更改方块的纹理,使它们具有粗糙的边缘,并尝试在第一次被击中时将每个方块的纹理替换为更小、损坏更严重的纹理,以获得更破碎的外观。