【发布时间】:2020-05-04 12:46:46
【问题描述】:
这是我第一个使用 Swift 的项目,我正在努力学习,但我被卡住了,无法在线找到解决方案。基本上,它是 pong 的复制品,直到现在一切都很好。 我的问题是,一旦我的球击中桨,我就无法理解如何播放音效。 碰撞的其他一切都很好,其他听起来像目标的声音也很好。只是无法弄清楚当两个精灵碰撞时我如何播放声音。 这是我写的:
func didBegin(_ contact: SKPhysicsContact) {
if contact.bodyA.node?.name == "main" && contact.bodyB.node?.name == "ball" || contact.bodyB.node?.name == "main" && contact.bodyA.node?.name == "ball" || contact.bodyA.node?.name == "enemy" && contact.bodyB.node?.name == "ball" || contact.bodyB.node?.name == "enemy" && contact.bodyA.node?.name == "ball" {
ball.run(blipPaddleSound)
}
}
都错了吗?
我已经尝试打破 if 语句,并且已经尝试让我的节点之一运行音效(ball.run('nameofthesound')。我认为这可能是文件的问题,但是其他效果在那部分代码中没有发挥出来。我认为碰撞没有问题,因为球在桨上和墙上反弹没有问题
这是我放置所有碰撞和接触掩码的代码部分:
ball.physicsBody?.contactTestBitMask = 1
ball.physicsBody?.collisionBitMask = 3
ball.physicsBody?.categoryBitMask = 1
main.physicsBody?.contactTestBitMask = 3
main.physicsBody?.collisionBitMask = 1
main.physicsBody?.categoryBitMask = 2
enemy.physicsBody?.contactTestBitMask = 3
enemy.physicsBody?.collisionBitMask = 1
enemy.physicsBody?.categoryBitMask = 2
【问题讨论】:
-
记住它是一个动作(.run),也许你正在删除那个节点的动作。
-
你指的是'let blipPaddleSound = SKAction.playSoundFileNamed("blipPaddle.mp3", waitForCompletion: false)'吗?如果是这样,它仍然在这里:/
-
碰撞时会在断点处停止吗?
-
你的意思是如果我在代码中设置一个断点?不,它不会停止。我认为可能我必须以不同的方式编写碰撞部分
-
显示您设置类别的代码,或者如果您在场景中设置它们,请截屏并显示它
标签: swift xcode if-statement sprite-kit collision-detection