前回でアイテム生成の処理が完成したので、次はアイテムを拾う処理でOnTriggerを使ってるのですが、どうやっても上手く動かないのでメモしとく回です。
OnTriggerは当たり判定を検知しますが、自分のOnTriggerはアイテムに乗っかっても動かざること山のごとしです…
参考サイト

原因を調査してみる-その1
以下のサイトに書いてあることを全て調べてみます。
https://dkrevel.com/oncollisionenter-not-working/
まずはコードです。
プログラムはこうなっていて、サバイバルゲーム(3D)を作成しているので
1. 変数名が間違っている
2. 引数が間違っている
6. 2Dと3D間違っていないか
は問題なさそう。

次は、プレイヤーキャラクターの子要素に付けているアイテム検知エリアです。
以下の項目も問題なさそう。
3. Rigidbodyがついていない
4. CollisionとTrigger間違っていないか
5. RigidbodyがKinematicになっていないか
全ての凡ミス項目に該当してないので、この段階で面倒なバグだと予想がついてしまう…


原因を調査してみる-その2
もしかしてOntriggerじゃなくてアイテムプレハブに問題があるのかと思い以下を変更
変更前→Boxcoliderのサイズ[0.1, 0.1, 0.1]
変更後→Boxcoliderのサイズ[1.0, 1.0, 0.1]
小さすぎて当たってない説がよぎったため検知エリアを10倍にしました。

すると、OnTriggerを検知したことがコンソールに表示されました。

しかし、表示されるタイミングが明らかにおかしい…
これだとゲームの起動と同時にアイテムに触れていることになります。
この現象を確認できたのはアイテム側の検知エリアを大きくした影響みたいですが、10倍でコレなら変更前のサイズでも近くに居れば十分当たる大きさということになります。
また、よくみるとOnTriggerExitも同時に起動しています。
つまり、ゲーム起動直後にアイテムに接触できる位置から接触できない位置に移動していることになってしまいます。
ますます訳わからん…
しばらくいじってみた
Boxcoliderのサイズを[0.5, 0.5, 0.1]にしてたらアイテムと全然関係ない位置でOnTriggerが発動しました。
どうやらアイテム検知エリアが本来のアイテムの位置と異なっているようです。
しかし、上図のようにアイテムプレハブの子要素に検知エリアを作成しているので原因が分からない…
以下のサイトのように、子オブジェクトは親オブジェクトに追従するためアイテム検知エリアが離れた位置にある状況が変です。
かなり重症っぽいのでしばらく原因を探ってみることにして、また何か分かり次第追記します。