Ios 椭圆体

Ios 椭圆体,ios,objective-c,sprite-kit,skspritenode,skphysicsbody,Ios,Objective C,Sprite Kit,Skspritenode,Skphysicsbody,我将使用哪个SKPhysicsBody类型创建椭圆physicsBody 我知道我可以用直线画出一条曲线,但它不是一个真正的椭圆,但似乎一定有办法压扁一个圆或创建一个圆?然后用该路径创建一个多边形体: CGPathRef path = CGPathRef CGPathCreateWithEllipseInRect(someRect, nil); SKPhysicsBody* body = [SKPhysicsBody bodyWithPolygonFromPath:path]; 尽管创建的路径

我将使用哪个SKPhysicsBody类型创建椭圆physicsBody

我知道我可以用直线画出一条曲线,但它不是一个真正的椭圆,但似乎一定有办法压扁一个圆或创建一个圆?

然后用该路径创建一个多边形体:

CGPathRef path = CGPathRef CGPathCreateWithEllipseInRect(someRect, nil);
SKPhysicsBody* body = [SKPhysicsBody bodyWithPolygonFromPath:path];
尽管创建的路径可能会为椭圆创建超过16个顶点(内部限制)。在这种情况下,它将崩溃,您必须手动创建路径,确保其不超过16个点

如果实体不需要是动态的,您也可以使用
BodyWithEdgeLopFromPath:
bodyWithEdgeChainFromPath:
-这两种方法都不限制顶点的数量。

并使用该路径创建多边形实体:

CGPathRef path = CGPathRef CGPathCreateWithEllipseInRect(someRect, nil);
SKPhysicsBody* body = [SKPhysicsBody bodyWithPolygonFromPath:path];
尽管创建的路径可能会为椭圆创建超过16个顶点(内部限制)。在这种情况下,它将崩溃,您必须手动创建路径,确保其不超过16个点


如果实体不需要是动态的,您也可以使用
BodyWithEdgeLopFromPath:
bodyWithEdgeChainFromPath:
-这两种方法都不限制顶点的数量。

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

  • 绘制一个接近椭圆的多边形,最多有12个顶点-可以使用辅助工具,例如:
  • 想法:如果你需要一个更圆的滚动行为,添加一个基于圆的物理体,然后向你的精灵添加一个子
    SKNode
    ,并将其偏移一点,然后向该子节点添加一个更小的基于圆的物理体。现在你有了两个圆形物理体。在另一边漂洗并重复-我想你可以来c你可能会迷失在一种云状或椭圆形的形状上,只有三个这样的圆彼此靠近。或者你可能会得到更好的结果,简单地用一个固定的接头连接圆形物体

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

  • 绘制一个接近椭圆的多边形,最多有12个顶点-可以使用辅助工具,例如:
  • 想法:如果你需要一个更圆的滚动行为,添加一个基于圆的物理体,然后向你的精灵添加一个子
    SKNode
    ,并将其偏移一点,然后向该子节点添加一个更小的基于圆的物理体。现在你有了两个圆形物理体。在另一边漂洗并重复-我想你可以来c你可能会迷失在一种云状或椭圆形的形状上,只有三个这样的圆彼此靠近。或者你可能会得到更好的结果,简单地用一个固定的接头连接圆形物体

我试过这个,但它告诉我
意外类型名称CGPathRef,预期表达式
我试过这个,但它告诉我
意外类型名称CGPathRef,预期表达式