我有一个精灵,我的代码是:
sprite.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:sprite.size.width/2];
sprite.physicsBody.dynamic = YES;
sprite.physicsBody.affectedByGravity = YES;
sprite.physicsBody.mass = 550.0f;
sprite.physicsBody.categoryBitMask = 1;
sprite.physicsBody.collisionBitMask = 1;
sprite.physicsBody.contactTestBitMask = 1;
我可以检测到碰撞:
- (void)didBeginContact:(SKPhysicsContact *)contact {
// destroy contact.bodyA , contact.bodyB
}
但是我如何从物理世界中摧毁/移除这些物体呢?
答案 0 :(得分:3)
我不确定我是否完全理解,但如果您正在寻找一种在碰撞时移除精灵的方法,则必须访问每个物理主体的节点属性,并调用其removeFromParent函数。
[contact.bodyA.node removeFromParent];
[contact.bodyB.node removeFromParent];
当然,您需要添加额外的逻辑来确定碰撞精灵的位掩码是否与您在碰撞期间要破坏的位掩码相同。