回答が得られなかったので質問を変えます。
IsTrigger=trueになっている2つのコライダーAとBが接触した時に
OnTriggerEnter2Dの中で衝突させることはできますか?
当初の質問文=======================================================
タイトルの通りですが、
物体AとBが接触した時にある条件によって貫かせるか衝突させるかを判定したいのですが、
OnTriggerEnter2D
OnCollisionEnter2D
これのどちらかのメソッドが呼ばれる前に判定できる方法はないのでしょうか?
◆環境
Unity2019.2.17f1
Windows10
「OnTriggerEnter2Dの中で衝突させる」とはどういう意味ですか?
(なお「貫かせるか衝突させるかを判定したい」なら「OnTriggerEnter2Dで接触検知→衝突するか判定→衝突する場合スクリプトから力を与える」とすればいいのではないかと思います)
>スクリプトから力を与える
IsTrigger=falseだった時の力と同じ力を与えることができればそれで解決しそうですが、その同じ力を取得することは可能でしょうか?
「力=質量×加速度」なので、rigidbody.massとrigidbody.velocityから求められるのではと思います。
それは剛体に形がない点としての物体ですよね?コライダーは形ありきなのでIsTrigger=falseの時の衝突ではもっと複雑な反射をしているのではないでしょうか?
反射については「どこまで精度が必要か」にもよります(あなたの作りたいもの次第です)。質問の詳細が記載されていないのでざっくりと答えました(そもそも「こうではないか?」という推測であって、回答ではないです)。
面の向きを考慮せず大まかな方向でよければ2つのオブジェクトの中心位置を求めて衝突と反対方向のベクトルを求めて与えるとか。
面の向きや複雑な形状を考慮するならisTriggerだと無理なので、上手くいくか分かりませんが衝突の瞬間IsTrigger=falseにするとかでしょうか。
あなたの回答
tips
プレビュー