【问题标题】:Ellipse SKPhysicsBodyEllipse SKPhysicsBody
【发布时间】:2014-01-21 23:08:14
【问题描述】:

我将使用哪种 SKPhysicsBody 身体类型来创建椭圆物理身体?

我知道我可以用直线制作一条曲线,只是让它不是一个真正的椭圆,但似乎必须有某种方法来挤压一个圆或创建一个圆?

【问题讨论】:

    标签: ios objective-c sprite-kit skspritenode skphysicsbody


    【解决方案1】:

    Create an elliptical CGPath 并使用该路径创建一个多边形体:

    CGPathRef path = CGPathRef CGPathCreateWithEllipseInRect(someRect, nil);
    SKPhysicsBody* body = [SKPhysicsBody bodyWithPolygonFromPath:path];
    

    创建的路径可能会为椭圆创建超过 16 个顶点(内部限制)。在这种情况下,它会崩溃,您必须手动创建路径,确保它不超过 16 个点。

    如果主体不需要是动态的,您也可以使用 bodyWithEdgeLoopFromPath:bodyWithEdgeChainFromPath: - 两者都对顶点数量没有限制。

    【讨论】:

    • 我试过这个,但它告诉我unexpected type name CGPathRef, expected expression
    【解决方案2】:

    由于 Sprite Kit 不接受具有椭圆 CGPath 的基于体积的物理体(它可以做圆形、矩形或任何最多 12 个顶点的凸多边形),您有两种选择:

    • 绘制一个接近椭圆的多边形,最多有 12 个顶点 - 您可以使用辅助工具,例如:http://dazchong.com/spritekit/
    • 想法:如果您需要更圆的滚动行为,添加一个基于圆形的物理体,然后将一个子 SKNode 添加到您的 sprite 并将其向一侧偏移一点,然后添加一个较小的基于圆形的物理体到那个子节点。现在你有两个圆形物理体在一起。冲洗并在另一侧重复 - 我想你可以接近某种云/椭圆形状,只有三个这样的圆圈彼此靠近。或者,只需将圆形体与固定接头连接起来,您可能会获得更好的结果。

    【讨论】:

      猜你喜欢
      • 2022-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多