前提・実現したいこと
Navmeshの迷路探索で動くAIが、平地の所々に存在するゴールのうちのどれかが、AIからの一定の範囲に入ったとき入ったオブジェクトをGameObjectとして取得したいです。
試したこと
物理演算を使ってSphereColliderに入ったGameObjectをTagで厳選して取得する方法は、AIを複数出した場合に重くなりすぎて失敗でした。
ちなみに、NevMesh自体は100体ほど動かしても問題ありませんが、物理演算を追加すると突如重くなります。
あとしっかりRigidBodyはIsKinematicをtrueにしております。
追記↓
実験の結果、OnTriggerEnterの関数が呼ばれること自体が重さの原因だという事がわかりました。
補足情報(FW/ツールのバージョンなど)
バージョンはUnity 2019.3.0a8です。
物理処理を全てのオブジェクトに対して行わず、Layerを使って制限する方法もあると思いますが、それは試されたのでしょうか?
はいやってみました。OnTriggerEnterの関数自体がUpdate関数より多く呼ばれるのですが、中身を空にしても重さわ変わらないのでOnTriggerEnterを使う事自体が重くなる原因だということはわかっています。
すいません、言い方が悪かったですね。
今言っているのはそういう意味ではなく、Project SettingsのPhysicsのLayer Collision Matrixで不要なチェックを入れていないか、ということです。
こちらこそすみません。レイヤーで物理判定をするオブジェクトを制限するという事ですよね。
もう一度確認して試してみましたが改善されませんでした。
あなたの回答
tips
プレビュー