首页 > 解决方案 > 如何使 SKSpriteNode 与 SKLabelNode 发生碰撞?SK精灵

问题描述

我想我的问题很清楚......情况是我试图将篮子 SKSpriteNode 与单词 SKLabelNode 相撞。实际上我可以检测到我的篮子与墙壁之间的碰撞,但是当我将相同的规则应用于标签和篮子时。我无法检测到碰撞。

这是我创建单词'''的代码

func createWord() {    
    words = SKLabelNode(text: "\(wordBank[wordIndex])")
    words?.physicsBody! = SKPhysicsBody(rectangleOf: self.size)
    words?.physicsBody!.collisionBitMask = wallCategory
    words?.physicsBody!.contactTestBitMask = wallCategory
    words?.physicsBody!.categoryBitMask = wallCategory
    words?.physicsBody!.affectedByGravity = false
    words?.physicsBody!.isDynamic = true
    words?.fontSize = 20
    words?.name = "words"

    let number = Int.random(in: 1 ..< 10)
    words?.position = CGPoint(x: (50 * number), y: 450)
    words?.zPosition = 1
    addChild(words ?? SKLabelNode(text: ""))
}

'''

这是我创建篮子的代码

"""

    basketNode = SKSpriteNode(imageNamed: "basket.png")
    basketNode.size = CGSize(width: 106.03, height: 100)

    defaultBasketPos = CGPoint(x:frame.midX, y:basketNode.frame.height/2)
    basketNode.position = defaultBasketPos
    basketNode.name = "basket"
    basketNode.zPosition = 1

    basketNode.physicsBody = SKPhysicsBody(rectangleOf: basketNode.size)

    basketNode.physicsBody?.collisionBitMask = wallCategory
    basketNode.physicsBody?.contactTestBitMask = wallCategory
    basketNode.physicsBody?.categoryBitMask = wallCategory
    basketNode.physicsBody?.affectedByGravity = false
    basketNode.physicsBody?.isDynamic = true
    addChild(basketNode)

"""

我只是打印(“碰撞”)到func didBegin(_联系:SKPhysicsContact)

最后是我的代码

'''

 let wallCategory:UInt32  = 0x1 << 1

'''

我想我在这里犯了一个错误,因为问题是我不能很好地理解类别。

谢谢!

标签: swiftcollision-detectionskspritenode

解决方案


推荐阅读