前回のOnTriggerが上手く作動しない件で少し分かったことがありました。
分かったこと
左側の緑色の枠がOnTrigger検知エリアです。
この中にアイテム検知エリアが入るとOnTrigger処理に遷移します。

そして前回、OnTrigger検知エリアをもの凄く大きくしても検知されない謎現象にハマって今回まで持ち越しになりました。
この問題について少し分かったことがあるので色々試します。

分かったこと
プレイヤーキャラクターの子要素に付いているアイテム検知エリアが、何故かこのような状態になっていました。

親オブジェクトのUnityChan!から離れて落下し続けています…
前回わからなかった以下の項目はコレが原因でした。
- アイテムに近づいてもOnTriggerが反応しない
- 1歩も動いてないのにOnTriggerExitが作動する
とりあえず子オブジェクトのアイテム検知エリアを親オブジェクトに追従させる必要があります。
調査
子オブジェクトが落下し続ける現象について調べてたら以下の記述を発見。

子オブジェクトが追従しない原因についても以下の記事を発見。
何それ全く分からなかった…
調整
UnityChan!の子オブジェクトに付いてるRigidbodyを削除。

しかし、この状態だとUnityChan!にもアイテムにもRigidbodyが付いてないです。
上記の事情でアイテム側の子要素にはRigidbodyを付ける必要があります。
なので、アイテムプレハブ側のコンポーネントをいじって問題に対処することにします。

両方のオブジェクトにRigidbodyが付いてない場合はOnTriggerが反応しない
- アイテム側の子オブジェクトにRigidbodyを追加
子オブジェクトにRigidbodyがアタッチされていると親オブジェクトに追従しない
- 親オブジェクト(アイテム)は移動しないので追従させる必要がない
UseGravity にチェックを入れてる場合は落下し続ける
- UseGravityのチェックを外す
動作確認
アイテムに近づいたときにOnTriggerEnterを検知。

アイテムから離れたときにOnTriggerExitを検知。

かなりハマったけど動作させることができました!
アイテムに「近づいたとき」「離れたとき」を検知できるようになったので、次回はアイテムを拾う処理の続きを実装します。