0

我正在为 SKSpriteNode 的物理体创建自定义边缘路径。

CGMutablePathRef edgePath = CGPathCreateMutable();

CGPathMoveToPoint(edgePath, NULL, -100, -70);
CGPathAddLineToPoint(edgePath, NULL, -100, 40);
CGPathAddLineToPoint(edgePath, NULL, -80, -20);
CGPathAddLineToPoint(edgePath, NULL, 30, -20);
CGPathAddLineToPoint(edgePath, NULL, 100, 100);
CGPathAddLineToPoint(edgePath, NULL, 100, -70);
CGPathCloseSubpath(edgePath);

我尝试使用以下代码分配physicsBody:

sprite.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromPath:edgePath];

sprite.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:edgePath];

sprite.physicsBody = [SKPhysicsBody bodyWithEdgeChainFromPath:edgePath];

这些都不能使精灵受到重力的影响。

但是,如果我使用简单bodyWithCircleOfRadius:的精灵会受到重力的影响。

任何人都可以解释为什么会这样吗?

4

1 回答 1

2

边缘循环和链创建静态(不可移动)的身体。它们不会受到重力的影响。

多边形形状的物体应该受到重力的影响。但是,您必须确保多边形具有逆时针缠绕,不会自相交并且其形状是凸面的。否则结果是不可预测的。

于 2013-11-26T13:51:35.497 回答