首页 文章

Sprite Kit Physics Body Complex Shape - Spritekit

提问于
浏览
2

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

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

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

2 回答

  • 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

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

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

    我想你有三个选择:

    • 使用多个 bodyWithPolygonFromPath: 物体(可能是最难做和耗时的) .

    • 使用多种不同尺寸的 bodyWithRectangleOfSize: 物体(不是那么难但很耗时) .

    • 仅使用图像中的直线并使用 bodyWithRectangleOfSize: (最简单,最快) . 如果选择此选项,请记住您仍然可以将直线旋转到各种角度 .

相关问题