相关疑难解决方法(0)

Sprite-Kit 为单个接触注册多个碰撞

好的 - 我确定这是重复的,而且 Whirlwind 或 KnightOfDragons 已经发布了一个解决方案,但我找不到它。

我正在使用 Sprite-Kit 在 Swift 中编写 Space Invader 的克隆。我遇到的问题是,当入侵者炸弹击中我的船时,代码有时会记录 2 或 3 次碰撞,从而立即结束游戏。这是处理炸弹/船舶碰撞的“didBeginContact”部分:

    case category.bomb.rawValue | category.ship.rawValue:
        print("Bomb hit ship!")
        let bomb = contact.bodyA.categoryBitMask == category.bomb.rawValue ? contact.bodyA.node : contact.bodyB.node
        bomb?.physicsBody?.contactTestBitMask = 0 // Seems to prevent multiple contacts with same bomb
        ship.physicsBody!.contactTestBitMask = 0 // We'll reset this after the death animation
        bomb?.removeAllActions()
        ship.removeAllActions()
        bomb?.removeFromParent()
        ships -= 1

        if ships == 0 { endScene(won: false, withMessage: "A bomb got you!") }
Run Code Online (Sandbox Code Playgroud)

当我运行游戏时,我看到:

Bomb …
Run Code Online (Sandbox Code Playgroud)

collision-detection sprite-kit

5
推荐指数
1
解决办法
1029
查看次数

标签 统计

collision-detection ×1

sprite-kit ×1