1

我的 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
    }

}
4

0 回答 0