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

有人能解释为什么会这样吗?

最佳答案

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

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

关于ios - 自定义物理不受SKSpriteNode的重力影响,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20217442/

10-14 21:03