【ClusterScript忘備録】getItemsNearで物理衝突しないアイテムのItemHandleを取得できない
背景
プレイヤーに常に追従して動くアイテムを作りたい
getItemsNear()でItemHandleを取得して、ItemHandleのStateにPlayerHandleを渡せば……あれ?動かないぞ?
どうやらItemHandleが取得できてないっぽい…ナンデ?
結論
ColliderとOverlapSourceShapeコンポーネントを付けると取得できます。
調査結果
公式リファレンスに答えが書いてありました。
どうやら、特定の種類のコライダーがついていないアイテムはgetItemHandleで取得できないようです。プレイヤーに追従する時にコライダーがあると邪魔なのでコライダーを抜いていたのですが、それが原因だったとは……
Shape?ナニソレ?と思ったら、これも公式ドキュメントに書いてありました。
同時にセットされたコライダーの衝突判定を制御するコンポーネントのようです。今までIsTriggerで制御してたから知らなかったわこんなコンポーネント……
結論としては、物理衝突しないアイテムをgetItemHandleで取得したい場合は適当なColliderとOverlapSourceShapeをアタッチすることで取得できます。
備考
もっときれいな実装があったらご一報ください。