1

ゲームで「ズーム」インおよびズームアウトできるようにしたいのですが、親の「ワールド」SKNode をスケーリングすると、ジョイントは SKScene (ルート ノード) に追加する必要があるため、それに応じてスケーリングされません。 .

SKScene のサイズを変更することはできますが、私が子供として持っている HUD グラフィックスはそれに合わせて拡大縮小されます。

HUD を SKView の子として作成することを検討しましたが、Apple の推奨に反するようです。また、SKScene トランジションを使用する利点が失われ、代わりに多数の ViewController を処理することになります。

SKSpriteNode をスケーリングし、それに合わせてジョイントをスケーリングする方法に関する提案はありますか?

4

1 に答える 1

2

ワールド ノードでズームイン/ズームアウトをシミュレートする最も安全な方法は、スケールすることです。ただし、お気づきのように、SKScene の側面にあるすべてのものを効果的に移動およびスケーリングしているため、World Node をスケーリングすると物理シミュレーションが中断されます。したがって、World ノードを 0.5 にスケーリングしてズームアウトをシミュレートすると、重力の効果が 2 倍になり、物がはるかに速く落下することがわかります。

解決策は、物理シミュレーションが完了する前にワールド スケールを常に 1.0 に設定し、レンダリングする前に見たいものに戻すことです。

副作用なしで動作する私がやっている方法は、次のように -didEvaluateActions および -didSimulatePhysics コールバックで実行することです。

-didEvaluateActions
{
  [myWorld setScale:1.0];    // must be 1.0 before physics!
}

-didSimulatePhysics
{
   [myWorld setScale:worldScale];   // now set correctly for rendering
}
于 2014-07-09T19:05:22.060 に答える