Swift sprite不检测碰撞

Swift sprite不检测碰撞,swift,sprite-kit,collision-detection,Swift,Sprite Kit,Collision Detection,我是雪碧套件的新手,现在在斯威夫特工作。试图在英雄与右墙碰撞时检测碰撞。当英雄和其他东西碰撞时,我可以检测到碰撞,但由于某种原因,它无法检测到右边的墙 再次英雄将检测到与左墙的碰撞,但右墙不会发生任何情况。 我被难住了 在我的游戏场景中,这就是我设置一切的方式 这就是我检测、分类和处理这些碰撞的地方。 正如你们所见,左墙精灵。 同样,碰撞对左侧墙有效,但对右侧墙无效 func addLeftWall(){ leftWall.name = "leftWall" l

我是雪碧套件的新手,现在在斯威夫特工作。试图在英雄与右墙碰撞时检测碰撞。当英雄和其他东西碰撞时,我可以检测到碰撞,但由于某种原因,它无法检测到右边的墙

再次英雄将检测到与左墙的碰撞,但右墙不会发生任何情况。 我被难住了

在我的游戏场景中,这就是我设置一切的方式 这就是我检测、分类和处理这些碰撞的地方。 正如你们所见,左墙精灵。 同样,碰撞对左侧墙有效,但对右侧墙无效

func addLeftWall(){

        leftWall.name = "leftWall"
        leftWall.color = .red
        leftWall.size = CGSize(width: 25, height: (frame.maxX / 2) + 25 )
        leftWall.position = CGPoint(x: frame.minX, y: (frame.midX + 200))
        leftWall.anchorPoint = CGPoint(x: 0, y: 0.5)


        let centerPoint = CGPoint(x: leftWall.size.width / 2 - (leftWall.size.width * leftWall.anchorPoint.x), y: leftWall.size.height / 2 - (leftWall.size.height * leftWall.anchorPoint.y))


        leftWall.physicsBody = SKPhysicsBody(rectangleOf: leftWall.size, center: centerPoint)




        leftWall.physicsBody?.isDynamic = false
        leftWall.physicsBody?.categoryBitMask = contactType.leftWallCategory.rawValue



        addChild(leftWall)



    }
编辑 我没有意识到我不应该这样写出来

hero.physicsBody?.contactTestBitMask=contactType.fireCategory.rawValue

    hero.physicsBody?.contactTestBitMask = contactType.leftTrapCategory.rawValue
    hero.physicsBody?.contactTestBitMask = contactType.rightTrapCategory.rawValue

    hero.physicsBody?.contactTestBitMask = contactType.rightWallCategory.rawValue
    hero.physicsBody?.contactTestBitMask = contactType.leftWallCategory.rawValue
而是需要用一个|

hero.physicsBody?.contactTestBitMask = contactType.fireCategory.rawValue | contactType.leftTrapCategory.rawValue | contactType.rightTrapCategory.rawValue |  contactType.rightWallCategory.rawValue | contactType.leftWallCategory.rawValue

区分接触和碰撞。它们是不一样的。你是对的,我把这称为碰撞问题是错误的。你完全误解了我的建议。你最好仔细阅读你的Sprite工具包。你说过这样一句话,你期望你的节点会相互碰撞,而实际上你只是在使用
contactTestBitMask
来完成这个任务。所以你的问题根本没有意义。@ElTomato英雄节点能够四处移动并与其他节点碰撞。我只想知道英雄节点是否与我列出的节点有联系。我将每个节点设置为各自的类别,然后将hero nodes contactTestBitMap设置为侦听其他每个节点类别。这是可行的,当英雄接触到火、leftTrap、rightTrap、leftWall时,我可以得到通知,但是由于某种原因,我无法让它响应我的rightwall节点
func addLeftWall(){

        leftWall.name = "leftWall"
        leftWall.color = .red
        leftWall.size = CGSize(width: 25, height: (frame.maxX / 2) + 25 )
        leftWall.position = CGPoint(x: frame.minX, y: (frame.midX + 200))
        leftWall.anchorPoint = CGPoint(x: 0, y: 0.5)


        let centerPoint = CGPoint(x: leftWall.size.width / 2 - (leftWall.size.width * leftWall.anchorPoint.x), y: leftWall.size.height / 2 - (leftWall.size.height * leftWall.anchorPoint.y))


        leftWall.physicsBody = SKPhysicsBody(rectangleOf: leftWall.size, center: centerPoint)




        leftWall.physicsBody?.isDynamic = false
        leftWall.physicsBody?.categoryBitMask = contactType.leftWallCategory.rawValue



        addChild(leftWall)



    }
    hero.physicsBody?.contactTestBitMask = contactType.leftTrapCategory.rawValue
    hero.physicsBody?.contactTestBitMask = contactType.rightTrapCategory.rawValue

    hero.physicsBody?.contactTestBitMask = contactType.rightWallCategory.rawValue
    hero.physicsBody?.contactTestBitMask = contactType.leftWallCategory.rawValue
hero.physicsBody?.contactTestBitMask = contactType.fireCategory.rawValue | contactType.leftTrapCategory.rawValue | contactType.rightTrapCategory.rawValue |  contactType.rightWallCategory.rawValue | contactType.leftWallCategory.rawValue