Ios 从物理世界中移除物理体的问题(spritekit)

Ios 从物理世界中移除物理体的问题(spritekit),ios,sprite-kit,Ios,Sprite Kit,我有一个精灵,我的代码是: 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; spr

我有一个精灵,我的代码是:

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
}

但是我怎样才能从物理世界中销毁/删除这些实体呢?

我不确定我是否完全理解,但是如果您正在寻找一种在碰撞时删除精灵的方法,那么您必须访问每个物理实体的节点属性,并调用其removeFromParent函数

[contact.bodyA.node removeFromParent];
[contact.bodyB.node removeFromParent];

当然,您需要添加额外的逻辑来确定碰撞精灵的位掩码是否与您希望在碰撞过程中销毁的位掩码相同。

我不确定是否完全理解,但如果您正在寻找在碰撞时删除精灵的方法,则必须访问每个物理体的节点属性,并调用其removeFromParent函数

[contact.bodyA.node removeFromParent];
[contact.bodyB.node removeFromParent];

当然,您需要添加额外的逻辑来确定碰撞精灵的位掩码是否与您希望在碰撞期间销毁的位掩码相同。

如果您只想删除主体但保留精灵,只需使用:sprite.physicsBody=nil;如果您只想移除身体,但保留精灵,只需使用:sprite.physicsBody=nil;