Sprite kit Sprite套件物理身体复杂形状-Spritekit

Sprite kit Sprite套件物理身体复杂形状-Spritekit,sprite-kit,game-physics,skphysicsbody,Sprite Kit,Game Physics,Skphysicsbody,我有这样的情况: 我想把白色的球移到红色的轨道内,并检测球在哪里碰到红色轨道的极限 哪一个是最好的解决方案?我必须沿边界创建多个透明形状?你还有其他想法吗? 非常感谢你无法为这种形状创建一个物理实体 使用bodyWithPolygonFromPath:将只允许您创建一个凸多边形路径,显然不适合您的形状 我认为您有3种选择: 使用多个body with polygon fromPath:body(可能是最难做且耗时的) 使用多种不同尺寸的车身和矩形尺寸:车身(不是很难,但很耗时) 在图像中仅使用直

我有这样的情况:

我想把白色的球移到红色的轨道内,并检测球在哪里碰到红色轨道的极限

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

你无法为这种形状创建一个物理实体

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

我认为您有3种选择:

  • 使用多个
    body with polygon fromPath:
    body(可能是最难做且耗时的)
  • 使用多种不同尺寸的
    车身和矩形尺寸:
    车身(不是很难,但很耗时)
  • 在图像中仅使用直线,并使用带矩形的车身尺寸:(最简单、最快)。如果选择此选项,请记住,您仍然可以自由地将直线旋转到各种角度

  • 在iOS8中,可以为这种形状创建一个物理实体

    使用p.e.Adobe Illustrator为您的形状制作纹理,并使用以下方法:

    init(texture texture: SKTexture!,alphaThreshold alphaThreshold: CFloat,size size: CGSize) -> SKPhysicsBody
    
    • SKTexture
      是您的塑形图像。主体由彩色像素定义
    • alphaThresHold:应成为新物理体一部分的texel的最小alpha值
    • 我想尺寸很清楚
    将分析纹理,并忽略鸡蛋周围的所有不可见像素,只有颜色像素被解释为SKPhysicsNode的主体。你应该使用太多这些,因为他们是非常昂贵的计算物理引擎

    此方法的变化可在中找到



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

    您可以使用
    +bodyWithEdgeLoopFromPath:
    。这将是一项艰苦的工作,但可能是值得的。