私は目的地に向かって移動するSKNodeの敵の動きを管理するGKAgent2Dを持っています。シーンが一時停止しているときにゲームプレイキットが一時停止しない
エージェントが移動しているSKSceneを一時停止すると、敵ノードはそのような動きを示さずに動き続けているようです。すべての目に見える動きが止まる(敵は動かなくなる)。私は5秒待ってからシーンをポーズ解除すると、敵が決して動いていないかのようになり、シーンを一時停止していなかった場所にポップアップし、通常通りそのポイントから移動し続けます。
AppleがDemoBotという名前のユーザー用に作成したサンプルデモゲームを見て、update:(NSTimeInterval *)currentTime
メソッドをそのまま返して使用しているのと同様の「修正」を実装しました。
- (void)update:(NSTimeInterval)currentTime {
[super update:currentTime];
if (_lastUpdateTime == 0) _lastUpdateTime = currentTime;
float delta = currentTime - _lastUpdateTime;
_lastUpdateTime = currentTime;
// Stop updating if the `worldNode` is paused.
if (worldNode.paused) { return };
for (GKComponentSystem *componentSystem in componentSystems) {
[componentSystem updateWithDeltaTime:deltaTime];
}
}
しかし、私は深く潜ると、彼らは一時停止が発生したときに現在有効なGKGoal
目的は、右停止していることを確認するために行っている他のものを見つけることができません:ここに私のコードは、現在のように見えるものです。私はagentDidUpdateメソッドをログに記録して、シーンを一時停止すると発砲を停止するので、動きの仕方がわからないのです。
誰かが答えを知っている場合は、私に知らせてください。ありがとうございました!
UPDATE:私も目標が移動するように設定している個々のノードの一時停止しようとした:
- (void)didPauseScene {
worldNode.paused = YES;
/*
<<Animations>>
*/
for (OEnemy *enemy /*my subclass*/ in enemyArray) {
enemy.paused = YES;
}
}
をしかし、これはまだシーンを一時停止することなく、彼らは同じように続けるからGKGoals
を停止していない..
UPDATE 2:
:文字通りエージェントシステムの目的を除去された薬剤冷停止溶液のみシーンから完全にすべてを削除せずに目標を停止するよりエレガントで適切な方法があることを望むなら、これは非常に悲しい解決方法です。しかし、他の問題はこれでもあります。一時停止していない場合の目標をリセットすると、一時停止が発生しなかった場合の位置にジャンプするのと同じ問題が発生します。
そのコードはあなたの 'update'メソッドかAppleのものですか?私たちはあなたのことを見て、助けてください。 – andyvn22
あなたの質問に答えるために投稿を更新しました。 * my *コードです。 –
スプライトキットの一時停止が盗聴されている、私はこの同じバグがゲームプレイキットを介して運ばれたと推測するつもりです。あなたのシーンが一時停止され、一時停止されていない場合は、すべての子供が一時停止され、一時停止されません。あなたのシーンで一時停止された変数をオーバーライドして、セッターにプロパティの値を設定させないようにしてください。 – Knight0fDragon