我使用此代码创建基于体积的物理主体
// Add a physcis body to the largeRock by creating a path
CGFloat offsetX = largeRock.frame.size.width * largeRock.anchorPoint.x;
CGFloat offsetY = largeRock.frame.size.height * largeRock.anchorPoint.y;
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 12 - offsetX, 57 - offsetY);
CGPathAddLineToPoint(path, NULL, 0 - offsetX, 48 - offsetY);
CGPathAddLineToPoint(path, NULL, 0 - offsetX, 21 - offsetY);
CGPathAddLineToPoint(path, NULL, 0 - offsetX, 21 - offsetY);
CGPathAddLineToPoint(path, NULL, 21 - offsetX, 0 - offsetY);
CGPathAddLineToPoint(path, NULL, 39 - offsetX, 0 - offsetY);
CGPathAddLineToPoint(path, NULL, 60 - offsetX, 9 - offsetY);
CGPathAddLineToPoint(path, NULL, 60 - offsetX, 39 - offsetY);
CGPathAddLineToPoint(path, NULL, 48 - offsetX, 57 - offsetY);
CGPathAddLineToPoint(path, NULL, 12 - offsetX, 57 - offsetY);
CGPathCloseSubpath(path);
largeRock.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:path];
这在模拟器上工作正常,但是当我在iPad上测试它时,当“largeRock”被添加到场景时应用程序崩溃
最后一行是崩溃。 当我将“bodyWithPolygonFromPath”更改为“bodyWithEdgeLoopFromPath”时,应用程序运行正常,但是精灵不受重力或任何其他物理影响,因为它现在是基于Edge的物理主体。
由于我需要bigRock受到重力的影响,我不知道该怎么做。
感谢您的帮助。
答案 0 :(得分:0)
路径中有两个相同的点,至少不在路径终点的重复点。
此外,如果路径不是凸形,则帽子也可能导致崩溃。