使用spritekit无法进行碰撞检测



我无法使用SKPhysicsContactDelegate检测到与的冲突。在控制台中,当对象碰撞时,不会打印任何内容。

我在游戏场景中有两个精灵节点

有什么解决方案吗?

非常感谢

class GameScene: SKScene,SKPhysicsContactDelegate {

var player :SKSpriteNode?
var block :SKSpriteNode?

override func didMove(to view: SKView) {
player = self.childNode(withName: "Player") as? SKSpriteNode
player?.name = "Player"
block = self.childNode(withName: "block") as? SKSpriteNode
block?.name = "Block"
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
let location = touch.location(in: self)
player?.position.x = location.x
player?.position.y = location.y
}
}
func didBegin(_ contact: SKPhysicsContact) {
var firstbody = SKPhysicsBody()
var secondbody = SKPhysicsBody()
if contact.bodyA.node?.name == "Player"
{
firstbody = contact.bodyA
secondbody = contact.bodyB
}else {
firstbody = contact.bodyB
secondbody = contact.bodyB
}
if firstbody.node?.name == "Player" && secondbody.node?.name == "Block"
{
print("Collosion detected")
}
}
}

您忘记将contactDelegate设置为您的游戏场景。

physicsWorld.contactDelegate = self

最新更新