物理演算によりオブジェクトの位置を制御します。
Adding a Rigidbody component to an object will put its motion under the control of Unity's physics engine. Even without adding any code, a Rigidbody object will be pulled downward by gravity and will react to collisions with incoming objects if the right Collider component is also present.
また、Rigidbody はオブジェクトに力を適用し、物理的に現実的な方法でそれをコントロールするためのスクリプト API も有しています。例えば、ある自動車の挙動は車輪によって加えられる力という面から指定することができます。この情報に基づけば、物理エンジンは車の挙動のその他ほとんどの側面を扱うことができるので、現実的に加速したり、衝突に対して正確に応答します。
スクリプトでは、FixedUpdate 関数は力を適用したり、Rigidbody の設定を変更する場所とすることが推奨されます(対照に Update は、その他ほとんどのフレーム更新作業で使用されます)。理由は、物理挙動の更新が時間進行単位で行われており、フレーム更新は関係ないからです。FixedUpdate は物理挙動更新の直前に呼び出されるため、その中でなされたどのような変更も直接反映されます。
Rigidbody で作業を始める際の一般的な問題には、ゲームの物理挙動が「スローモーション」で実行されているように見えるというものがあります。これは実際にあなたのモデルに使用されているスケールに起因しているものです。デフォルトの重力設定は、1 ワールドユニットが距離の 1 メートルに対応することを前提としています。非物理的なゲームでは、あなたのモデルがすべて 100 ユニットの長さであっても大した差はありませんが、物理挙動を用いればそれらはとても大きなオブジェクトとして扱われます。もし小さいと思われるようなオブジェクトに大きなスケールを使用すれば、それらはとてもゆっくりと落下しているように見えます。なぜなら、物理エンジンはそれらをとても長い距離を落下しているとても大きなオブジェクトと見なすからです。このことを念頭に置き、オブジェクトは現実の生活のスケールよりも大きく、または小さくするようにしましょう(したがって、例えば車は 4 ユニット = 4 メートルほどにしておくべきです)。
angularDrag | オブジェクトの回転に対する抵抗 |
angularVelocity | Rigidbody の角速度ベクトル |
centerOfMass | Transform の原点に対する質量の中心 |
collisionDetectionMode | Rigidbody の衝突検出モード |
constraints | Rigidbody のシミュレーションで自由に操作できる軸をコントロールします |
detectCollisions | 衝突検出を有効にするかどうか(デフォルトでは常に有効) |
drag | オブジェクトの抵抗 |
freezeRotation | 物理演算による回転の影響を受けるかどうか |
inertiaTensor | 質量の中心に対する、相対的な対角慣性テンソル |
inertiaTensorRotation | 慣性テンソルの回転角度 |
interpolation | interpolation を使用することで、固定フレームレートで物理処理実行のエフェクトをなめらかにできます。 |
isKinematic | 物理演算の影響を受けるかどうか |
mass | Rigidbody の質量 |
maxAngularVelocity | Rigidbody の最大角速度(デフォルトは 7 )範囲は { 0、infinity }. |
maxDepenetrationVelocity | 貫通状態から出るときのリジッドボディの最大速度 |
position | Rigidbody の位置 |
rotation | Rigidbody の回転 |
sleepThreshold | オブジェクトがスリープ状態に入る、質量で正規化された運動エネルギーのしきい値。 |
solverIterations | solverIterations はリジッドボディのジョイントと衝突の接触がどれだけ正確に解決されるかに影響を与えます。Physics.defaultSolverVelocityIterations をオーバーライドします。正数でなければなりません。 |
solverVelocityIterations | solverVelocityIterations はリジッドボディのジョイントと衝突の接触がどれだけ正確に解決されるかに影響を与えます。Physics.defaultSolverVelocityIterations をオーバーライドします。正数でなければなりません。 |
useConeFriction | Rigidbody で摩擦円錐を使用するかどうか |
useGravity | Rigidbody が重力の影響を受けるかどうか |
velocity | Rigidbody の速度ベクトル |
worldCenterOfMass | ワールド座標による質量の中心値(読み取り専用) |
AddExplosionForce | 爆発のエフェクトをシミュレートするために Rigidbody に力を適用させます。 |
AddForce | Rigidbody に力を加えます |
AddForceAtPosition | 特定の位置から力を適用します。結果、これはトルクを適用しオブジェクトに力を加えます |
AddRelativeForce | ローカル座標に対して Rigidbody に相対的な力を加えます。 |
AddRelativeTorque | ローカル座標に対して Rigidbody に相対的な力を加えます。 |
AddTorque | Rigidbody にトルクを追加します |
ClosestPointOnBounds | アタッチされたコライダーのバウンディングボックスにもっとも近い位置 |
GetPointVelocity | ワールド座標における、Rigidbody オブジェクトの速度を取得します |
GetRelativePointVelocity | ローカル座標における、Rigidbody オブジェクトの相対的速度を取得します |
IsSleeping | スリープモードかどうか |
MovePosition | Rigidbody オブジェクトを指定する位置へ移動します |
MoveRotation | Rigidbody オブジェクトを指定する角度へ回転します |
ResetCenterOfMass | Rigidbody の重心をリセットします。 |
ResetInertiaTensor | 慣性テンソル値と回転をリセットします。 |
SetDensity | 不変な密度と仮定してアタッチされたコライダーをもとに質量を設定します |
Sleep | 最新の 1 フレームで Rigidbody を強制的にスリープモードにします |
SweepTest | Rigidbody オブジェクトが特定の方向でオブジェクトと衝突するかテストします |
SweepTestAll | Rigidbody.SweepTest のようですが、これはヒットしたすべてを返します |
WakeUp | 強制的にスリープモードを解除します |
OnCollisionEnter | この collider/rigidbody は他の collider/rigidbody に触れたときに OnCollisionEnter は呼び出されます。 |
OnCollisionExit | OnCollisionExit は、このコライダー/リジッドボディが他のリジッドボディ/コライダーから離れた瞬間に呼ばれます。 |
OnCollisionStay | OnCollisionStay は rigidbody/collider が他の rigidbody/collider に触れている間毎フレーム 1 度だけ呼び出されます。 |
gameObject | このコンポーネントはゲームオブジェクトにアタッチされます。コンポーネントはいつもゲームオブジェクトにアタッチされています。 |
tag | ゲームオブジェクトのタグ |
transform | GameObject にアタッチされた Transform (アタッチされていない場合は null) |
hideFlags | オブジェクトは非表示、シーンに保存、ユーザーが編集可能、などを設定する。 |
name | オブジェクト名 |
BroadcastMessage | ゲームオブジェクトまたは子オブジェクトにあるすべての MonoBehaviour を継承したクラスにある methodName 名のメソッドを呼び出します。 |
CompareTag | このゲームオブジェクトは tag とタグ付けされているかどうか |
GetComponent | ゲームオブジェクトに type がアタッチされている場合は type のタイプを使用してコンポーネントを返します。ない場合は null です |
GetComponentInChildren | GameObject や深さ優先探索を活用して、親子関係にある子オブジェクトから type のタイプのコンポーネントを取得します。 |
GetComponentInParent | GameObject や深さ優先探索を活用して、親子関係にある親オブジェクトから type のタイプのコンポーネントを取得します。 |
GetComponents | GameObject から type のタイプのコンポーネントを「すべて」取得します。 |
GetComponentsInChildren | GameObject や深さ優先探索を活用して、親子関係にある子オブジェクトから type のタイプのコンポーネントを「すべて」取得します。 |
GetComponentsInParent | GameObject や深さ優先探索を活用して、親子関係にある親オブジェクトから type のタイプのコンポーネントを「すべて」取得します。 |
SendMessage | ゲームオブジェクトにアタッチされているすべての MonoBehaviour にある methodName と名付けたメソッドを呼び出します |
SendMessageUpwards | ゲームオブジェクトと親(の親、さらに親 ... )にアタッチされているすべての MonoBehaviour にある methodName と名付けたメソッドを呼び出します |
GetInstanceID | オブジェクトのインスタンス ID を返します |
ToString | ゲームオブジェクトの名前を返します |
Destroy | ゲームオブジェクトやコンポーネント、アセットを削除します |
DestroyImmediate | オブジェクト obj を破棄します。 |
DontDestroyOnLoad | 新しいシーンを読み込んでもオブジェクトが自動で破壊されないように設定します |
FindObjectOfType | タイプ type から最初に見つけたアクティブのオブジェクトを返します |
FindObjectsOfType | タイプから見つけたすべてのアクティブのオブジェクト配列を返します |
Instantiate | オブジェクト original のコピーを返します |
bool | オブジェクトが存在するかどうか |
operator != | 二つのオブジェクトが異なるオブジェクトを参照しているか比較します |
operator == | 2つのオブジェクト参照が同じオブジェクトを参照しているか比較します。 |