Sprite Kit Physics Body Complex Shape - Spritekit

时间:2014-04-17 13:45:20

标签: sprite-kit game-physics skphysicsbody

我遇到这种情况:http://mokainteractive.com/example.png

我想将白球移到红色轨道内,并检测球在何处接触红色轨道的极限。

哪种解决方案最好?我必须沿边界创建多个透明形状?你有其他想法吗? 非常感谢

2 个答案:

答案 0 :(得分:4)

iOS8 中,您可以为这种形状创建一个物理主体。

用p.e.制作你的形状纹理。 Adobe Illustrator并使用此方法:

init(texture texture: SKTexture!,alphaThreshold alphaThreshold: CFloat,size size: CGSize) -> SKPhysicsBody
  • SKTexture是你塑造的形象。正文由彩色像素定义。
  • alphaThresHold:应该是新物理主体一部分的纹素的最小alpha值。
  • 我认为尺寸很清楚。

分析纹理,忽略蛋周围的所有不可见像素,只将颜色像素解释为SKPhysicsNode的主体。您应该使用太多这些,因为它们对物理引擎的计算成本非常高。

此方法的变体可在SpriteKit Class Reference

中找到

解决你的问题。制作一个应该透明的区域的反向纹理,并将其作为纹理传递给物理主体。将对其进行分析,并创建一个围绕自由区的主体。

答案 1 :(得分:-1)

您不能为这种形状创建单个物理主体。

使用bodyWithPolygonFromPath:只允许您创建一个凸多边形路径,这显然不适用于您的形状。

我认为你有三个选择:

  1. 使用多个bodyWithPolygonFromPath:身体(可能是最难做和耗时的)。
  2. 使用多种不同大小的bodyWithRectangleOfSize:身体(不是那么辛苦但耗时)。
  3. 仅使用图片中的直线并使用bodyWithRectangleOfSize:(最简单,最快)。如果选择此选项,请记住您仍然可以将直线旋转到各种角度。