【问题标题】:IOS Swift Spritekit Collision DetectionIOS Swift Spritekit 碰撞检测
【发布时间】:2015-03-02 03:58:03
【问题描述】:

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

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)
}

任何帮助将不胜感激。

【问题讨论】:

    标签: ios swift sprite-kit collision-detection bitmask


    【解决方案1】:

    要检测碰撞,您必须设置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
    

    【讨论】:

    • 非常感谢,正是我所需要的。
    • 随着时间的推移,我很有可能自己弄清楚这一点,但你有没有机会知道如何将它放入标签中,这部分仍然困扰着我。
    • 你的意思是增加与桨碰撞的分数?
    • 是的,这是我的目标@rakeshbs
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多