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