回答:
考慮しなければならないことがいくつかあります。
注:以下で説明する最適化のメリットは、大量の壁でのみ重要になります。その時点で、ゲーム内に壁を作るためにバイナリ空間分割(BSP)のような別のソリューションを検討するのが賢明かもしれません。これにより、レンダリング(正しく設計されている場合)および物理(衝突するものとしないものの非常に適切な定義があるため)に対してレベルが高度に最適化されます。
ボックスは、プレーンよりもレンダリングに時間がかかります。より多くの頂点と三角形があるため、頂点シェーダーとラスタライザーをより多くのデータで実行する必要があります。したがって、可視性の観点から必要な場合にのみボックスを使用してください。プレーヤーが見る必要があるものに必要な顔を削除します。
可能な場合でBoxCollider
はなく、常にを使用するMeshCollider
必要があります。MeshCollider
メッシュの面ごとに(または凸包として)衝突を適用し、レイキャスティングと物理学を遅くする必要があります(ただし、1つのボックスでは無視できる量です)。もう一つのことBoxColliders
は、プレイヤーが本当に速く進んでいるときに、それらを段階的に進めるのがはるかに難しいということです。連続的な衝突があっても、壁を通して物事が相次いでいることに気付いた場合は、いつでも拡張することができますBoxColliders
MeshColliders
(すべてのBoxColliders
寸法を調整する必要がないため)を使用して飛行機の作業を大幅に高速化する場合は、必要なパフォーマンスが得られれば、それらを使用するだけでよい場合があります。
「コバーン」のポイントを少し拡大する:
レンダリング:平面のみとして壁をレンダリングする場合、平面(より正確にはその面)にはレンダリングされた側面が1つしかないため、壁は片側からのみ表示されます。そのため、プレーヤーが壁の周りを移動できる場合、すべての側面をカバーするために複数の飛行機が必要になります。つまり、いずれにしても箱になってしまいます。
物理:単純なジオメトリコライダー(球体、ボックスなど)は、メッシュのすべての面を個別にチェックする必要がないため、フルメッシュコライダーに比べて計算が常に高速です。代わりに、「単純な」レイキャストを使用したり、距離を計算したりできます(球体の中心から球体のサイズを引いた距離など)。
別の「飛行機コライダー」(Unityにはない)を持つ他の物理エンジンには、「より良い」ものはありません。飛行機はパフォーマンス面でわずかに速いかもしれませんが、実際に衝突することなく飛行機を通過する問題に遭遇するかもしれません。次に、ここで説明するように、より厚いコライダー(プレーンではなくボックス)を使用するか、Continous Collission Detection(CCD)に移動します。
深さの差が小さすぎて出血するため、軽い出血を助けるためにしっかりさせるのが最善の影があるといつも言われました。
私は間違っている可能性がありますが、私はすべての壁とそのようなものを両面にします。壁はほんの数頂点になるので、それを飛行機にすることでそれほど節約するべきではありません。
私はいくつかの側面を残していますが、そのほとんどは、軽い出血を助けるために周りにたくさんのものがある周辺のものの下部または上部です。
私は物理学についても同じことをしますが、すべてを実際に考えているわけではありませんが、壁を壁として、平面を平面として使用するのは正しいように思えましたが、それは私だけです