我的 GameScene 类中有以下代码,它将所有移动的精灵定向到它们前进的方向。如果从 update() 调用它可以完美地工作,但我不明白为什么从 didEndContact 调用它时它根本不起作用。
从 update() 调用的问题是,当场景转换开始时,不再调用更新(似乎)并且所有精灵都停止自我定位。我有很长的场景过渡,所以看起来很糟糕。
func updateSpriteDirections(){
var i = 1
var nodeToUpdate: SKSpriteNode?
nodeToUpdate = self.childNodeWithName("sprite\(i)") as! SKSpriteNode!
while (nodeToUpdate != nil){
changeSpriteDirection(nodeToUpdate!)
i += 1
nodeToUpdate = self.childNodeWithName("sprite\(i)") as! SKSpriteNode!
}
func didEndContact(contact: SKPhysicsContact) {
updateSpriteDirections()
}
override func update(currentTime: CFTimeInterval) {
updateSpriteDirections()
}
func changeSpriteDirection(sprite: SKSpriteNode){
let nodeToTurn = self.childNodeWithName(sprite.name!)
if(nodeToTurn != nil) {
let angle = atan2(sprite.physicsBody!.velocity.dy, sprite.physicsBody!.velocity.dx)
nodeToTurn!.zRotation = angle - 90 * DegreesToRadians
}
}