前提・実現したいこと
Unity2Dでブロック崩しに変化を加えたゲームを作っています。
当初はボール-ブロックの反射を動的-キネマティックで2D物理演算に任せていましたが、
稀に意図しない方向で反射してしまったり、速さが変化してしまったり、細かい動きを自分で調節したくなったため、
ボールを動的ではなくキネマティックで動作させることにして、
ボール-ブロック(キネマティック-キネマティック)の反射を2D物理演算に頼らず自前のスクリプトで動作させたいです。
発生している問題・エラーメッセージ
反射処理のスクリプト自体はVector2 Reflect(Vector2 inDirection, Vector2 inNormal)
を使ったり、
あるいは自分で内積などを計算して用意することができるのですが、
どちらの場合も衝突面の法線ベクトルinNormalが必要になります。
このときの法線ベクトルを取得する方法が分かりません。
該当のソースコード
ソースコード
試したこと
[Unity] 衝突判定における、IsTriggerとRigidbodyとIsKinematicのパターンを実験
上記サイトによるとキネマティック-キネマティックの場合はisTriggerのOnTriggerEnter2D
を呼び出すことはできるものの、OnCollisionEnter2D
を呼び出すことはできないと考えられます。実際試してみたところできないようでした。
OnTriggerEnter2D
では(以前のバージョンでは取得できたこともあるらしいのですが)接触点を取得することができません。
それゆえ法線ベクトルを取得できませんでした。
また、3Dの衝突に関しては__[プロジェクト設定]>[物理]>Contact Pairs Mode__でキネマティック-キネマティックのCollisionを可能にできるようですが、
2D物理についてこれに相当する設定項目は見つけられませんでした。
補足情報(FW/ツールのバージョンなど)
Unityバージョン2020.1.3f1
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。