2015-11-13 53 views
2

我试图从包含动态alpha值的纹理创建一个SKPhysicsBody。不幸的是,SKPhysicsBody是从纹理中的一块创建的。我该如何解决这个问题?从纹理与alpha的多个SKPhysicsBody

下面是如何被创建的SKPhysicsBody:

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

编辑:

Before

After

+1

哪个纹理的一部分,你找什么?灰色,棕色或绿色?只是为你分层工作?像背景中的灰色一样,然后棕色作为前景与alpha(更容易产生一个physicsBody),然后绿色(玩家?)与棕色相互作用? – Gliderman

+0

我在寻找棕色部分的对撞机 - 它应是一个破坏的地形和动态对撞机的变化。棕色部分的这些孔由绿色圆盘/圆圈引起。问题是SKPhysicsBody(texture:texture !, size:size)只返回一个物理体并丢弃其他物体。 – DrDigg0R

回答

1

为了完整起见,我找到了一种方法,现在解决这个问题。

不幸的是,我不能用这个方便的功能从纹理中创建SKPhysicsBody。一旦纹理包含多个形状,它将不再起作用。

基本上我做的是手工创建初始路径,做所有的计算上的路径本身并存储所有这些,然后从每次更改后此路径重新创建SKPhysicsBodies。

我使用了一个开源的剪辑库(Clipper),我将路径传递给了剪辑,并让我回到了包含所有形状的所有路径/多边形的二维CGPoint数组。我使用这个路径创建新的SKPhysicsBody,并将它们与SKPhysicsBody(body:[SKPhysicsBody])合并。

enter image description here