swift - 交互时删除节点 Spritekit

标签 swift xcode sprite-kit skspritenode

我的视野中心有一个圆圈。被称为 enemyBall 的圆圈与它发生碰撞。我想检测这些碰撞,然后从 View 中移除 enemyBalls。

func generateEnemyBall(){

    let enemyBall = SKSpriteNode()
    let randomColor = Int((arc4random_uniform(UInt32(circleTextures.count))))
    enemyBall.texture = SKTexture(imageNamed: circleTextures[randomColor])
    enemyBall.size = CGSize(width: mainCircle.size.width / 5, height: mainCircle.size.width / 5)
    enemyBall.physicsBody = SKPhysicsBody(circleOfRadius: enemyBall.size.width / 2)
    enemyBall.physicsBody?.affectedByGravity = false

    let quadrant = Int(arc4random_uniform(UInt32(3)))
    enemyBallForce = -CGFloat(arc4random_uniform(UInt32(100)))

    switch quadrant {

    case 0:

        enemyBall.position = CGPoint(x: self.frame.maxX - 20, y: self.frame.maxY - 100)

        self.addChild(enemyBall)

        let dx = (enemyBall.position.x) - mainCircle.position.x
        let dy = (enemyBall.position.y) - mainCircle.position.y

        let impulse = applyImpulse(dx: dx, dy: dy)
        enemyBall.physicsBody?.applyImpulse(CGVector(dx: enemyBallForce * impulse.dx, dy: enemyBallForce * impulse.dy))

        break

现在我该怎么办

最佳答案

我对 swift 比较陌生,所以我想用 objective-c 来回答你的问题。

在 didMoveToView 添加:

self.physicsWorld.contactDelegate = self;

为你的敌人球添加更多属性,即

enemyball.physicsBody.categoryBitMask = ballhitcategory;
enemyball.physicsBody.collisionBitMask = ballhitcategory;
enemyball.physicsBody.contactTestBitMask = ballhitcategory;

其中 ballhitcategory 可以是任何无符号常数整数值。

然后在 didBeginContact 委托(delegate)方法中:

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

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

    //Do your ball removal here.
}

关于swift - 交互时删除节点 Spritekit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43923103/

相关文章:

ios - 如何从 iOS 中的 UITextview 的顶部和底部删除多余的空间?

objective-c - 错误 : libxml/parser. h:没有那个文件或目录

iphone - 第一次尝试动态过滤搜索数组

sprite-kit - iOS SpriteKit - 碰撞和接触未按预期工作

swift - 我如何让两件事相互碰撞,然后从场景中移除一个?

ios - Swift Stevia + UICollectionView 自调整单元格大小问题

ios - RxSwift - 绑定(bind)到 tableView 的可选问题

ios - 调用了 editActionsForRowAt IndexPath 但未显示 EDIT 和 DELETE

swift - 如何使用 UI 测试用例验证 UITableviewCell 标签和 Imageview 数据

swift - 以编程方式创建 SKTileDefinition