2016-10-09 2 views
0

私はゲームに取り組んでいます。私は2つのオブジェクトの衝突を検出しようとしています。最初は2つのコライダーが必要であると仮定しました。そして、私は剛体が必要であることを知りました。オブジェクトの必要性と剛体の両方を見つけるために来ました。これは多くのCPU使用量であり、剛体はこれらの衝突を検出するためだけに役立ちます。これは、シーン内にどれくらいのオブジェクトがあるかを大幅に制限します。Unity3Dの衝突検出の代替手段はありますか?

私が薄くすることができる唯一の解決策は、両側から小さな光線を投げることです。より最適な他の業界標準ソリューションはありますか?

ありがとうございます。

+0

あなたのオブジェクトの周りに光を投げかけてみると、私が推測する最悪の解決策になります。インターネットには衝突検出に関するリソースが豊富ですが、手作業でソリューションを実装するのは辛いでしょう。すべてのオブジェクトが衝突しなければならないのでなければ、Unityレイヤーを使用することができます:https://docs.unity3d.com/Manual/LayerBasedCollision.html – Hellium

+0

それは私が考えることができる最悪の事です:D –

答えて

4

あなたが望むものを正確に行う方法はありません。
1)Rigidbodyをオブジェクトのうちの1つにのみ貼り付けます(2つのうち衝突する可能性があります)
2つのオブジェクトのうちの1つにのみ貼り付けます。 )それは(非トリガーを別のオブジェクトに当たったとき、それはRigidbodyまだ火災離れてトリガイベントを必要としない他のオブジェクトの衝突にisTriggerに物理
3)チックに反応しないRigidbodyIsKinematicにダニ
(!!!)衝突型加速器(剛体)

またはON Rigidbodyを使用するすべてのGOの場合、IsKinematicをすべてに入れてください。


@ Helliumのコメントを参照してください。
私はあなた自身の衝突検出をコード化するならば、その日の終わりにはおそらくより多くのcalcをコードしているコードに終わるでしょう。時間(そしておそらく少なくとも少しばかげている)。
C++ではなくスクリプトでコード化するだけで、エンジンの衝突検出はC++であるためです。 (あなたの.NETスクリプトは、il2cpp経由でネイティブにコンパイルされますそうではないネイティブ実装==まだエンジンでサポートされている同様の性質を有するコード、つまりC++でコーディングされたよりも遅くなければなりません)

サイドノート:もしあなたのアプリを見つける。遅いですが、必ずしも衝突検知のためではありません。それは不可能ではありませんそれはあなたのコード、何のあなたはあなたが衝突を検出するときに遅い実行します。
the profilerを使用して、アプリケーションで何が遅くなるかを確認することを強くお勧めします。
本当にあなたのコードの場合は、その実行をより速くする方法に関する質問を投稿してください。

+0

あなたは広大なプールです情報のありがとう、兄。 –

+0

ああ、私は確かに私自身の検出を行うことを提案していませんでした。私が別の方法を求めていないと思ったら<3 –

+0

Uhh、指示されたようにすることで、飛行機がトリガーであることがわかるようになりました。これは正常ですか? –

関連する問題