質問: 親子関係のオブジェクトがあり、親のオブジェクトはIsTriggerでない、Colliderを持っており、子のオブジェクトがIsTriggerのColliderを持っています。 親のオブジェクトは物体と接触するロボットの体で、子のオブジェクトは他の物体と干渉しないロボットのセンサー、といったイメージです。 この時、親のオブジェクトがIsTriggerのColliderを持つオブジェクトと接触した時の処理をしようと、親オブジェクトにアタッチしているスクリプトにOnTriggerEnterを記述しました。 しかし、このOnTriggerEnterがこのオブジェクトが接触した時にも呼ばれてしまいます。 つまり、「ロボットの体にすり抜ける何かが当たった」時の処理をしたいのに、「ロボットのセンサーにすり抜ける何かが当たった」時も親のOnTriggerEnterが呼ばれてしまう。しかも、それがロボットの体とロボットのセンサーのどちらに当たったのか区別できない、といった状態です。 --- ちょうど、こちらのサイトに記載されている「A 親子関係のオブジェクト」の状態でしたので、 子にrigidbodyをアタッチして、「B 親子関係のオブジェクト」の状態にすることで上記の問題は解決しました。 ``` unity : ontriggerenterの親子関係 http://blog.bbtune.com/archives/3077/ontriggerenter%E3%81%AE%E8%A6%AA%E5%AD%90%E9%96%A2%E4%BF%82 ``` しかし、子にrigidbodyを付けると、子がIsTriggerなオブジェクトと接触しても子のOnTriggerEnterが呼ばれなくなるという、別な問題が発生しました。また、物理演算を使用しない子にrigidbodyを付けるということ自体、処理として正しいものとは思えません。 タイトルの通り、親の接触時にのみOnTriggerEnterを呼ぶにはどうすればよいのでしょうか。
回答: 親と子の両方がColliderを持つ設計は良くないと思うんで、 子に空のGameObjectを作って、親のColliderをそっちに移動したらどうでしょう?