ちょっとメモと、あとこいつらの設定がぱっとみよくわからなかったので、調べて使ってみて動作を確認した
PhysX
物理エンジンに特化したゲーム開発用のSDK
1. Rigidbody
直訳で剛体です。要は理想の物体ですね、物理の授業とかで仮想の物質で2点の距離が絶対に一定になるとかいうあれです。
ドキュメント
- GameObject が物理特性の制御下で動作する
- 力やトルクを受け、現実的な方向にオブジェクトを動かす
- GameObject は、重力の影響を影響を受けるリジッドボディを含めるか、スクリプティングを通じて加えた力の下で動作するか、NVIDIA PhysX 物理特性エンジンを通じて、その他のオブジェクトと相互作用
制御 | 内容 |
---|---|
Mass | オブジェクトの質量 |
Drag | 移動の抵抗 |
Angular Drag | 回転の抵抗 |
Use Gravity | 重力による移動をするかどうかのフラグ |
Is Kinematic | 物理的な動作をスクリプトでコントロールするかどうかのフラグ |
Interpolate | 動作の補間方法で、挙動が変な時に前後のフレームから補間させるための設定 |
Collision Detection | 衝突判定の方法で、オブジェクトのすり抜け防止が可能 |
Constraints | Position(移動)、Rotation(回転)の拘束設定。 |
2. Physic Material
ドキュメント
- GameObject が物理特性エンジンの制御下で動作
- 現実的な衝突、多様な種類のジョイント、その他のクールな動作へのゲートウェイが開く
制御 | 内容 |
---|---|
Dynamic Friction | 動的摩擦度 0 ~ 1 |
Static Friction | 静的摩擦度 0 ~ 1 |
Bounciness | 弾力度 0 ~ 1 |
Friction Combine | 摩擦の合成 |
Bounce Combine | 弾力度の合成 |
Friction Direction 2 | 方向別の摩擦度 |
Dynamic Friction 2 | Friction Direction 2 の動的摩擦度 |
Static Friction 2 | Friction Direction 2 の静的摩擦度 |
3. Collider
直訳すると衝突装置。コライダーとよみます。
ドキュメント
Collider | 内容 |
---|---|
Box | 立方体 |
Sphere | 球 |
Capsule | カプセル |
Mesh | メッシュデータ |
isTriger
オブジェクトが衝突範囲に入ったことを検知します
trueにしたGameObjectの衝突範囲に入ったことが検知され、OnTrigger*のメソッドが呼ばれます
method | call timing |
---|---|
OnCollisionEnter | 衝突時 |
OnCollisionStay | 衝突している最中 |
OnCollisionExit | 衝突後、オブジェクトから離れた |
OnTriggerEnter | トリガー状態で衝突時 |
OnTriggerExit | トリガー状態で衝突している最中 |
OnTriggerStay | トリガー状態でオブジェクトから離れた |
使い分け
Rigidbodyが絶対に必要だが、各々条件が異なっている
OnCollision*
- 触れ合う2つのオブジェクトにRigidbodyが必要
- Is Kinematic = false
- Is Trigger = false
OnTrigger*
- 触れ合う2つのオブジェクトのどちらかにRigidbodyが必要
- Is Trigger = true
→この条件を逸した状態で動かしてみると、OnTriggerの判定よりもOnCollisionが優先されたりするので、何か別条件もあるとは思われます
ちゃんとどの機能があるか知れば難しくない
これらを組み合わせて落下物とそれを物理的に処理することができる
→要はRigidBodyが剛体なのでモノ自体を表現してます。そのモノが実際に物理的に摩擦や弾力性の影響が出るものをPhysic Materialとして処理します。
通常は、この2つを用いて処理します
クソゲーでも作ってみようかなと画策中