首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PhysicsBody -allContactedBodies如何在PhysicsWorld中列出关节

PhysicsBody -allContactedBodies如何在PhysicsWorld中列出关节
EN

Stack Overflow用户
提问于 2014-02-07 20:57:31
回答 1查看 365关注 0票数 1

我正在制作一个有许多不同类别的身体的游戏。当用户移动一个物体并将其与同一类别的另一个物体碰撞时,它们彼此粘合在一起。当三个物体粘合在一起时,它们就消失了。

body有一个用于其特定类别的位掩码和一个标识body的CNPhysicsCategoryGenBody。这是一种游戏要求,因为参与碰撞的其他物体不受用户控制,也不会相互粘合。

要粘合的Code中涉及的didBeginContact代码:

代码语言:javascript
复制
// Here I clean the mask removing the CNPhysicsCategoryGenBody and leaving the object particular
// category only.
uint32_t cleanMaskA = contact.bodyA.categoryBitMask ^ CNPhysicsCategoryGenBody;
uint32_t cleanMaskB = contact.bodyB.categoryBitMask ^ CNPhysicsCategoryGenBody;

// If the objects are of the same category create a joint
if (cleanMaskA == cleanMaskB) {

    SKPhysicsJointFixed *newJoint = [SKPhysicsJointFixed jointWithBodyA:contact.bodyA bodyB:contact.bodyB anchor:contact.contactPoint];
    [self.physicsWorld addJoint:newJoint];
}

到目前一切尚好。当我想列出连接到另一个实体的实体时,问题就来了。SKPhysicsBody -allContactedBodies方法不返回关节中的实体。我认为这可能是因为身体与关节相连,而不是与另一个身体相连。

SKPhysicsWorld具有添加或移除关节的方法,但我找不到一种方法来列出参与关节的实体。我需要列出这些主体,以便检查哪些主体是粘合的,看看它们是否超过一定数量并将其移除。

EN

回答 1

Stack Overflow用户

发布于 2014-02-08 07:45:38

allContactedBodies方法确实不会返回参与关节的实体。

若要列出参与运动类型的实体,有两个出厂设置选项:

1) newJoint.bodyA.nodenewJoint.bodyB.node getters将返回每个关节中的2个bodies

2)更好的是,反过来-枚举所有节点的body并使用physicsBody.joints属性-这将返回该body连接到的关节数组,然后比较这些关节以获得实际的粘合body组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21628410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档