1

Swift で書かれた非常に単純な SpriteKit ゲームがあり、2 つのシーンを切り替えようとしています。このコードは完全に機能します:

let skView = self.view as SKView

let scene = GameScene(size: self.scene.size)
scene.size = skView.bounds.size
scene.scaleMode = .AspectFill

//This line shows the new scene immediately (as expected)
skView.presentScene(scene) 

上記のコード行を次のように置き換えると、問題が発生します。

let sceneTransition = SKTransition.doorsCloseHorizontalWithDuration(2.0)
skView.presentScene(scene, transition: sceneTransition)

これを行っても何も起こりません (現在のシーンが画面に残ります)。いくつかの異なるトランジションを試しましたが、常に同じ結果になりました。

何かご意見は?

4

2 に答える 2

1

解決しました。

上記のコードには何も問題がないことがわかりました。問題は、特定の SKPhysicsBody の位置に基づいて更新関数で実行しようとしていたことです。遷移は瞬時に発生しないため、 update が繰り返し呼び出される時間が与えられ、遷移が何度も再トリガーされました。これにより、移行が発生しませんでした。

修正は、移行を開始したかどうかを確認するブール値を追加することだったので、一度だけ試行します。

于 2014-08-09T17:48:38.153 に答える
0

他の誰かがこれを経験した場合は、発信シーンを一時停止することもできます. その中のロジックの一部は、状態を変更したり、遷移を妨げたりしている可能性があります。

設定してみる

  transition.pausesOutgoingScene = YES;

それが役立つかどうかを確認するために、

それがあなたの意図であれば、それを解決策として使用するか、ブレークポイントを設定して(update:トランジションが作成された後に試してください)、何が起きているかを確認してください。

于 2014-09-18T22:15:59.603 に答える