有什么简单的方法可以测试 SKPhysicsBody 是否完全包含另一个?
像 bodyA
这样的东西包含了 bodyB
的每个点,左右。
只是想在实现一些 2D 数学助手之前问你如何使用附加的“元”-CGPaths 附加到给定节点或其他东西。
最佳答案
没有直接的方法,但有些方法可能对您有用。如果您的 body 是矩形的并且与节点的框架匹配,那么这可能值得尝试:
BOOL isContained = CGRectContainsRect(bodyA.node.frame, bodyB.node.frame); // bodyA is the container, bodyB is examined for being contained
如果您的 body 是使用完全任意路径创建的多边形,那么找到它们的包容将是一项复杂的任务。这是一个远景,但您可能会使用上述方法结合 CGPathGetBoundingBox
获得一些初始近似值 - 这将返回多边形周围的矩形,然后您可以检查它们是否重叠(使用 CGRectInset
根据需要)。
还有一个接近的 SKPhysicsWorld 方法:-(SKPhysicsBody *)bodyInRect:(CGRect)rect
,但它只返回一个与矩形相交的 SKPhysicsBody。
关于ios - SKPhysicsBody 遏制测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21883065/