SKSpriteNode不受自定义physicsBody的重力影响

时间:2013-11-26 12:44:27

标签: ios objective-c sprite-kit cgpath skphysicsbody

我正在为SKSpriteNode的physicsBody创建自定义边路径。

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:,精灵会受到重力的影响。

有人可以说明为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

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

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