尝试使用cgpathaddellipseinect创建多边形的错误



我正在尝试创建一个椭圆。我使用了 bodyWithEdgeLoopFromPath,但它起作用了,但似乎有问题,因为有时其他物体会陷入其中。

,但我希望椭圆固体,所以我尝试了bodyWithPolygonFromPath(我希望它静态)

horizontalOval = [[SKShapeNode alloc] init];
theRect = CGRectMake(0, 0, self.frame.size.width/6 , 15);
CGMutablePathRef ovalPath = CGPathCreateMutable();
CGPathAddEllipseInRect(ovalPath, NULL, theRect);
horizontalOval.path = ovalPath;
horizontalOval.fillColor = [UIColor blueColor];
horizontalOval.physicsBody.dynamic = NO;
horizontalOval.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:ovalPath];

但出现了错误

SKPhysicsBody: Error attempting to create polygon with 17 vertices, maximum is 12

如何创建复杂的路径并使它们扎实?

同样,当我在self.frame.size.width/2的位置和self.frame.size.height/2位置时,它不会保持中心,它向右右。

我必须 theRect = CGRectMake(-40, 0........)才能使其中心,但是为什么是?


UIBezierPath* ovalPath = [UIBezierPath bezierPathWithOvalInRect: _paddleRect];

但是有13个顶点。尝试使用PaintCode

您可以将边缘物体视为没有音量的边缘,只是边缘,一个具有'负空间'的物体 - 这就是为什么您的物体被捕获到中间的原因。正如Sprite套件编程指南所说:

边缘和音量之间的主要区别在于,边缘允许在其自身边界内移动,而音量被认为是实体对象。

由于您希望椭圆形成为一个实体对象,因此您确实需要一个基于音量的主体。对于这些尸体,您有三个可以创建其形状的选项:圆(bodyWithCircleOfRadius:),矩形(bodyWithRectangleOfSize:)或多边形(bodyWithPolygonFromPath:)。

对于椭圆形形状,您可能必须绘制多边形 - 但是,Sprite Kit Physics引擎只会接受最多12个顶点的引擎(这就是为什么在绘制实际椭圆时会遇到错误的原因)。最好的选择是使用辅助工具绘制多边形,例如:http://dazchong.com/spritekit/-只需拖动和删除您的精灵并绘制路径即可。请记住,多边形必须是凸(内部180度以上无角),并且最多可以具有12个顶点。

还可以查看此答案是否有类似的问题:椭圆形Skphysicsbody

相关内容

  • 没有找到相关文章