Ellipse SKPhysicsBody

时间:2014-01-21 23:08:15

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

虽然创建的路径可以为椭圆创建超过16个顶点(内部限制)。在这种情况下,它将崩溃,你必须手动创建路径,确保它没有超过16点。

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

答案 1 :(得分:1)

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

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