2017-02-12 8 views
0

パフォーマンスに関する質問がありました。ユニティ5 - コライダーとスレッドのタイマー

はここで文脈だ:

は、プレイヤーが1つのだけの方向に移動し、3つの車線(それらのすべてが同じ方向に行く)を切り替えることが許されているTempleRunのようなゲームを想像してみてください。

テンプルランとは異なり、ターンはありません。

私はレベルを動的に生成したいので、地面にコライダーを配置しました。トリガされると、レベルはパスの次の(ランダムな)部分をロードし、古いものをアンロードします。

プレーヤーが1方向に一定の速度で動いているので、ゲームの部分を読み込んでアンロードするためにタイマーを使用する方が良いのではないかと思いましたか?

また、どのように衝突者がUnityによって処理されたのだろうと思いましたか?彼らは常に衝突が起こるのを見ているスレッドで動作しますか?

答えて

0

個人的に私はブーストやその他の理由でプレーヤーの速度を変更したい場合は、時間を使用しません。

ここでコライダーのいくつかの情報です:

https://docs.unity3d.com/Manual/CollidersOverview.html

https://forum.unity3d.com/threads/collision-detection-at-high-speed.3353/

は、固定の時間ステップがあり、ときに警告するために、イベントを発生させ、別のスレッドがあるようにそれは感じて、私が読んだものから衝突が発生します。

+0

リンクありがとうございます;)しかし、ブーストがない場合はどうなりますか?タイマーは衝突検出プロセスより安価でしょうか? –

+1

これをコード化する場合は、グリッドシステムを使用します。プレーヤーのz位置は常に0で、x位置を制御します。レベルでは、lerpを使用して素敵なスムーズな動きを作成するために、毎秒z値を設定します。レベルの一部が特定のz値に達するたびに、それを取り除き、別のものを前面に置きます。技術的にはタイマーを使用しますが、速度値から計算し、結果をlerp関数で使用します。 –

関連する問題