使用具有alpha通道的纹理创建多个SKPhysicsBody

3

我试图从包含阿尔法值的纹理动态创建SKPhysicsBody。不幸的是,SKPhysicsBody仅从纹理中的一个部分创建。我该怎么解决这个问题?

这是创建SKPhysicsBody的代码:

physicsBody = SKPhysicsBody(texture: texture!, size: size)

编辑:

之前

之后

这是关于网页设计的改进。

1
你需要哪部分的纹理?灰色的,棕色的还是绿色的?只是简单地叠加图层可以吗?比如将灰色作为背景,然后使用带有alpha通道的棕色作为前景(更容易生成物理体),最后让绿色(玩家?)与棕色互动? - Gliderman
我正在寻找棕色部分的碰撞体 - 它应该是可破坏地形,碰撞器会动态变化。这些棕色部分的洞是由绿色盘/圆引起的。问题在于SKPhysicsBody(texture: texture!, size: size)只返回一个物理体并且丢弃其他的。 - DrDigg0R
1个回答

2
为了完整起见,我现在找到了解决这个问题的方法。
可惜我不能只使用纹理中方便的函数来创建SKPhysicsBody。一旦纹理包含多个形状,它就不再起作用了。
基本上,我手动创建初始路径,对路径本身进行所有计算并存储它们,然后在每次更改后从这些路径重新创建SKPhysicsBodies。
我使用一个开源的剪裁库(Clipper),将路径传递给它进行剪裁,并返回一个二维的CGPoint数组,其中包含所有形状的所有路径/多边形。我使用这些路径创建新的SKPhysicsBodies,并与SKPhysicsBody(bodies:[SKPhysicsBody])合并它们。

enter image description here


做得好。我遇到了类似的问题,即从不连续的纹理创建 SKPhysicsBody。也许你可以提供更详细的代码示例来解决这个问题? - Shadow Of

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接