我将使用哪种 SKPhysicsBody 身体类型来创建椭圆物理身体?
我知道我可以用直线制作一条曲线,只是让它不是一个真正的椭圆,但似乎必须有某种方法来挤压一个圆或创建一个圆?
我将使用哪种 SKPhysicsBody 身体类型来创建椭圆物理身体?
我知道我可以用直线制作一条曲线,只是让它不是一个真正的椭圆,但似乎必须有某种方法来挤压一个圆或创建一个圆?
创建一个椭圆 CGPath并使用该路径创建一个多边形体:
CGPathRef path = CGPathRef CGPathCreateWithEllipseInRect(someRect, nil);
SKPhysicsBody* body = [SKPhysicsBody bodyWithPolygonFromPath:path];
尽管创建的路径可能会为椭圆创建超过 16 个顶点(内部限制)。在这种情况下,它会崩溃,您必须手动创建路径,确保它不超过 16 个点。
如果主体不需要是动态的,您也可以使用bodyWithEdgeLoopFromPath:
and bodyWithEdgeChainFromPath:
- 两者都对顶点数量没有限制。
由于 Sprite Kit 不接受具有椭圆 CGPath 的基于体积的物理体(它可以做圆形、矩形或任何最多 12 个顶点的凸多边形),您有两种选择:
SKNode
到您的精灵并将其向一侧偏移一点,然后将一个较小的基于圆形的物理体添加到该子节点。现在你有两个圆形物理体在一起。冲洗并在另一侧重复 - 我想你可以接近某种云/椭圆形状,只有三个这样的圆圈彼此靠近。或者,只需将圆形主体与固定接头连接起来,您可能会获得更好的结果。