2016-03-23 23 views
0

SpriteKit oyunu yapıyorum ve oyuncu düğümünü takip etmek için bir SKCameraNode almaya çalışıyorum. Ancak, oynatmak için bir SKAction kullandıktan sonra oynatıcı düğümünün konum özelliğine eriştiğimde, eylemi çalıştırdıktan sonraki konum, onu çalıştırmadan önceki konumla aynıdır.SKAction Tamamlanma Bekleniyor

func updateMap(playerX: Int, playerY: Int) { 
    player.coordinates = CGPoint(x: highlightedTile.tileX, y: highlightedTile.tileY) 
    camera?.position = player.position 
} 

ve benim player sınıftan kodu: aksiyon tamamlanana kadar

var coordinates: CGPoint { 
    didSet{ 
     let moveAction = SKAction.moveTo(CGPoint(x: (coordinates.x) * 64 - 64, y: (coordinates.y) * 56 - 47), duration: NSTimeInterval(2.0)) 
     self.runAction(moveAction) 
    } 
} 

SpriteKit oyuncu düğümün position özelliğini güncelleştirmez İşte benim sahne kodudur. Bu yüzden kamera konumunu güncellemeden önce animasyon tamamlanana kadar beklemek istiyorum. Bu nasıl yapılabilir? hareketli tamamlanmadan önce position özelliğini sorguluyorsunuz

cevap

0

...

bu deneyin:

print(playerNode.position) 

let moveAction = SKAction.moveTo(CGPoint(x: (coordinates.x) * 64 - 64, y: (coordinates.y) * 56 - 47), duration: NSTimeInterval(2.0)) 
let waitAction = SKAction.waitForDuration(NSTimeInterval(3)) 

self.runAction(moveAction, completion: { 
    print(playerNode.position) 
}) 

Ayrıca ben oynatıcıyı temsil etmelidir playerNode değişken kullanmak unutmayın. Durumunuzda self'un ne olduğundan emin değil (oynatıcı veya sahne).

+0

Sorumluluktaki eksiklik için üzgünüm. Bu kod benim oyuncunun sınıfının bir parçası. 'Player'ın oyuncunun bir harita üzerindeki konumunu gösteren' 'koordinat'' özelliği vardır. Bu kod, 'koordinatlar 'özelliği değiştiğinde patlar. Benim yapmak istediğim, oyuncu taşındığında oyuncu sınıfına değil, sahne sınıfımdaki kodu çalıştırmasıdır. Bu nasıl yapılabilir? –

+0

@ATyshka Yayınladığımla ilgili sorun nedir? Oynatıcının başlangıç ​​ve bitiş konumunu yazdırıyor mu? – Whirlwind

+0

Sorunumu bildirirken karışıklıktan dolayı özür dilerim. Sorumu güncelledim. –

İlgili konular