2016-03-23 25 views
0

私はSpriteKitゲームを作っていますが、プレーヤーノードに従うためにSKCameraNodeを取得しようとしています。しかし、SKActionを使用してプレイヤーノードのpositionプロパティにアクセスすると、アクション実行後の位置は実行前の位置と同じになります。ここに私のシーンのコードは次のとおりです。SKAction完了待ち

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

と私playerクラスからのコード:アクションが完了するまで

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ベースは、プレイヤーノードのpositionプロパティを更新しません。したがって、カメラの位置を更新する前にアニメーションが完了するまで待つ必要があります。これはどうすればできますか?移動が完了する前に、あなたはpositionプロパティを照会する

答えて

0

...

はこれを試してみてください:

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) 
}) 

はまた、私はプレーヤーを表している必要がありますplayerNode変数を使用することに注意してください。あなたのケース(プレーヤーまたはシーン)に何が入っているのかが分かりません。

+0

申し訳ありませんが、私の質問には明確さが欠けています。このコードは私の 'player'クラスの一部です。 'Player'はマップ上でのプレーヤーの位置を表す' coordinates'プロパティを持っています。このコードは、 'coordinates'プロパティが変更されたときに起動します。私がしたいのは、プレイヤーが移動した後、シーンクラスではなく、プレーヤークラスでコードを実行することです。これはどうすればできますか? –

+0

@ATyshka私が投稿した問題は何ですか?それはプレーヤーの開始位置と終了位置を出力しますか? – Whirlwind

+0

私は自分の問題を述べるのが混乱していることをお詫び申し上げます。私は私の質問を更新しました。 –

関連する問題