親子関係のオブジェクトがあり、親のオブジェクトは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を呼ぶにはどうすればよいのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/09/30 08:53