質問: ### 前提・実現したいこと オブジェクトAと OnTriggerStayしているtag Bのオブジェクトの個数を取得したいです。 ### 発生している問題・エラーメッセージ ### 該当のソースコード ``` ソースコード ``` ### 試したこと いろいろ調べてみたのですが、OnTriggerStayしている個数を取得しようとしている人は少なく、なかなか情報が出てきませんでした。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: ! 上の画像のような状態で**3**が取得できれば良いということでしょうか。 ``` // Aにアタッチされているスクリプト内 // 重なっているBの個数 private int _containingBCount; private void OnTriggerEnter(Collider other) { // 重なってきたColliderがBであるかどうか if (other.CompareTag(Bのタグ名)) { // Bであれば個数を +1 _containingBCount++; } } private void OnTriggerExit(Collider other) { // 出ていったColliderがBであるかどうか if (other.CompareTag(Bのタグ名)) { // Bであれば個数を -1 _containingBCount--; } } ``` 上記のスクリプトのように、`OnTriggerStay`を使わず、Bが入ったら +1、Bが出たら -1とする方がシンプルになります。 ! このように、Unityでは一回の更新内で複数のものが「衝突する」、つまり「OnTriggerStay等のメソッドが呼ばれる」ようになっています。 例えば、同じ一回の更新内でBが2つ同時にAに入った場合、`OnTriggerEnter`が2回呼ばれ、`_containingBCount`は+2となります。 出ていく時も同じように-2になります。