为什么定位精灵不能从'didEndContact()'起作用,而是来自'update()'

时间:2016-05-28 19:23:54

标签: ios swift sprite-kit skspritenode skphysicsworld

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

}

0 个答案:

没有答案