Swift 在交互时删除节点

Swift 在交互时删除节点,swift,xcode,sprite-kit,skspritenode,Swift,Xcode,Sprite Kit,Skspritenode,我的视野中心有一个圆圈。被称为enemyBall的圆圈出现并与之碰撞。我想检测这些碰撞,然后从视图中删除Enemyball func generateEnemyBall(){ 现在我该怎么做。声明SKPhysicContactDelegate class GameScene: SKScene, **SKPhysicsContactDelegate** { ... } 存在联系人时调用此委托方法: func didBegin(_ contact: SKPhysicsContact) { ..

我的视野中心有一个圆圈。被称为enemyBall的圆圈出现并与之碰撞。我想检测这些碰撞,然后从视图中删除Enemyball

func generateEnemyBall(){


现在我该怎么做。

声明SKPhysicContactDelegate

class GameScene: SKScene, **SKPhysicsContactDelegate** {
...
}
存在联系人时调用此委托方法:

  func didBegin(_ contact: SKPhysicsContact) {
...
}
删除节点

enemyBall.removeFromParent()

我比斯威夫特新一点,这就是为什么我想用目标C回答你的问题

在didMoveToView中添加:

self.physicsWorld.contactDelegate = self;
为您的enemyball添加更多属性,例如

enemyball.physicsBody.categoryBitMask = ballhitcategory;
enemyball.physicsBody.collisionBitMask = ballhitcategory;
enemyball.physicsBody.contactTestBitMask = ballhitcategory;
其中,ballhitcategory可以是任何无符号常量整数值

然后在didBeginContact委托方法中:

-(void)didBeginContact:(SKPhysicsContact *)contact
{
    SKPhysicsBody *body1,*body2;

    body1 = contact.bodyA;
    body2 = contact.bodyB;

    //Do your ball removal here.
}

这对我来说是最有效的,因为我是随机生成灌肠球的

func didBegin(_ contact: SKPhysicsContact) {

    contact.bodyB.node?.removeFromParent()

}
我知道身体B将是灌肠球,因此我访问了它的节点,然后将其移除。 简单地使用删除了一些节点

 enemyBall.removeFromParent()

谢谢@DeepakRastogi和@JPAquino

谢谢,我将尝试这两种解决方案,并向您介绍最新进展。您可以向我解释didBeginContact函数中的最后一部分吗?body1和body2是什么?代码正在运行,但只有一些敌方球被删除,而不是全部删除。请参见此处的Sprite工具包文档e是使用Swift中的Sprite工具包进行碰撞和接触检测的一些好例子。
 enemyBall.removeFromParent()