当玩家与物体碰撞时如何添加声音效果?
How to add a sound effect when player collides with object?
嘿,所以当玩家从顶部击中物体但根本不起作用时,我试图发出声音,我与其他物体有相同的代码并且工作完美,只有这个没有。知道它会是什么吗?
class MonsterNode: GameObjectNode {
var monsterType: MonsterType!
let monsterSound = SKAction.playSoundFileNamed("MONSTER.mp3", waitForCompletion: false)
override func collisionWithPlayer(player: SKNode) -> Bool {
if player.physicsBody?.velocity.dy < 0 {
runAction(monsterSound, completion: {
})
player.physicsBody?.velocity = CGVector(dx: player.physicsBody!.velocity.dx, dy: 450.0)
self.removeFromParent()
} else if player.physicsBody?.velocity.dy > 0 {
player.physicsBody?.velocity = CGVector(dx: -player.physicsBody!.velocity.dx, dy: -450.0)
player.hidden = true
}
return false
}
你的问题是你试图在 self 中播放声音,然后你立即将 self 从父级中移除。所以试试这个,
if player.physicsBody?.velocity.dy < 0 {
runAction(monsterSound, completion: {
self.removeFromParent()
})
player.physicsBody?.velocity = CGVector(dx: player.physicsBody!.velocity.dx, dy: 450.0)
嘿,所以当玩家从顶部击中物体但根本不起作用时,我试图发出声音,我与其他物体有相同的代码并且工作完美,只有这个没有。知道它会是什么吗?
class MonsterNode: GameObjectNode {
var monsterType: MonsterType!
let monsterSound = SKAction.playSoundFileNamed("MONSTER.mp3", waitForCompletion: false)
override func collisionWithPlayer(player: SKNode) -> Bool {
if player.physicsBody?.velocity.dy < 0 {
runAction(monsterSound, completion: {
})
player.physicsBody?.velocity = CGVector(dx: player.physicsBody!.velocity.dx, dy: 450.0)
self.removeFromParent()
} else if player.physicsBody?.velocity.dy > 0 {
player.physicsBody?.velocity = CGVector(dx: -player.physicsBody!.velocity.dx, dy: -450.0)
player.hidden = true
}
return false
}
你的问题是你试图在 self 中播放声音,然后你立即将 self 从父级中移除。所以试试这个,
if player.physicsBody?.velocity.dy < 0 {
runAction(monsterSound, completion: {
self.removeFromParent()
})
player.physicsBody?.velocity = CGVector(dx: player.physicsBody!.velocity.dx, dy: 450.0)