IOS Swift Spritekit 碰撞检测

标签 ios swift sprite-kit collision-detection bitmask

我是一个非常新的程序员,目前正在使用 Swift 制作一个简单的打砖 block 游戏。我正在尝试创建一个标签,该标签根据球与 Racket 碰撞的次数动态显示分数。到目前为止,这是我的代码的两个不同部分。

bottom.physicsBody!.categoryBitMask = BottomCategory
ball.physicsBody!.categoryBitMask = BallCategory
paddle.physicsBody!.categoryBitMask = PaddleCategory
ball.physicsBody!.contactTestBitMask = BottomCategory

我知道这可能没有多大帮助,但我想知道我必须制作哪种类型的位掩码。这是我的代码的一部分,我希望它在其中创建标签

func didBeginContact(contact: SKPhysicsContact) {
    // Make variables for the two physics bodies
    var score: Int
    var firstBody: SKPhysicsBody
    var secondBody: SKPhysicsBody

    let label = SKLabelNode(fontNamed: "Chalkduster")
    label.text = String(score)
    label.fontSize = 40
    label.fontColor = SKColor.whiteColor()
    label.position = CGPoint (x: 1136, y: 600)
    addChild(label)
}

如有任何帮助,我们将不胜感激。

最佳答案

要检测碰撞,您必须设置 collisionBitMask,要测试接触,您必须设置 contactTestBitMask。球必须检测与桨的碰撞并检测与底部和桨的接触。所以你必须将 contactTestBitMask 设置为

ball.physicsBody?.contactTestBitMask = BottomCategory | PaddleCategory

collisionBitMask

ball.physicsBody?.collissionBitMask = PaddleCategory

所以你的代码应该是

bottom.physicsBody?.categoryBitMask = BottomCategory
bottom.physicsBody?.contactTestBitMask = BallCategory

paddle.physicsBody?.categoryBitMask = PaddleCategory
paddle.physicsBody?.contactTestBitMask = BallCategory
paddle.physicsBody?.collissionBitMask = BallCategory

ball.physicsBody?.categoryBitMask = BallCategory
ball.physicsBody?.contactTestBitMask = BottomCategory | PaddleCategory
ball.physicsBody?.collissionBitMask = PaddleCategory

关于IOS Swift Spritekit 碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28802499/

相关文章:

ios - TableView 和 UIImageView 显示不正确的布局,除非滚动

ios - 如何在单击 ParentViewcontroller 按钮时显示容器 View 的 Viewcontroller(子 Viewcontroller)

ios - 在 firebase 函数中拥有自己的完成处理程序(自定义类方法)

ios - UISearchController 请求 web 服务而不堆叠许多请求

sprite-kit - 以编程方式使用 SKEmitterNode 的正确方法

ios - Swift SpriteKit - 逐渐增加旋转

ios - 我想我遇到了僵局,但不太明白为什么

ios - 无法转换类型 'UINavigationController' (0x10426be10) 的值

ios - HKWorkoutSession 中的心率数据是移动平均值吗?

swift - 重复 SKAction 起始位置变化