我正在为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:
,精灵会受到重力的影响。
有人可以说明为什么会这样吗?
答案 0 :(得分:2)
边缘循环和链创建静态(不可移动)主体。它们不会受到重力的影响。
多边形体应受重力影响。但是,您必须确保多边形具有逆时针绕组,不是自相交的并且其形状是凸的。否则结果是不可预测的。