0

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

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

4

2 回答 2

3

创建一个椭圆 CGPath并使用该路径创建一个多边形体:

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

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

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

于 2014-01-21T23:22:53.690 回答
1

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

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