サーチ…
リジッドボディー
概要
Rigidbodyコンポーネントは、GameObjectが現場に物理的に存在することを力に対応できるようにします。あなたはGameObjectに力を直接加えることも、重力や他の剛体がそれに当たるような外力に反応させることもできます。
リジッドボディコンポーネントの追加
コンポーネント>物理>リジッドボディをクリックしてリジッドボディを追加できます
剛体オブジェクトの移動
RigidbodyをGameObjectに適用する場合は、Transformを操作するのではなく、動かすために力またはトルクを使用することをお勧めします。使用AddForce()
またはAddTorque()
この方法:
// Add a force to the order of myForce in the forward direction of the Transform.
GetComponent<Rigidbody>().AddForce(transform.forward * myForce);
// Add torque about the Y axis to the order of myTurn.
GetComponent<Rigidbody>().AddTorque(transform.up * torque * myTurn);
質量
リジッドボディゲームオブジェクトの質量を変更して、他のリジッドボディや力とどのように反応するかに影響を与えます。より高い質量は、GameObjectが他の物理ベースのGameObjectにもっと影響を与え、より大きな力を必要とすることを意味します。異なる質量の物体は、同じ抗力値を有する場合、同じ速度で落下する。コードの質量を変更するには:
GetComponent<Rigidbody>().mass = 1000;
ドラッグ
ドラッグ値が高いほど、オブジェクトは移動中に減速します。反対の力のように考える。コードのドラッグを変更するには:
GetComponent<Rigidbody>().drag = 10;
isKinematic
あなたがRigidbodyをKinematicとしてマークした場合、それは他の軍の影響を受けることはできませんが、他のGameObjectにはまだ影響を及ぼします。コードを変更するには:
GetComponent<Rigidbody>().isKinematic = true;
制約
リジッドボディの位置や回転を固定するために、各軸に制約を加えることもできます。デフォルトはRigidbodyConstraints.None
です。
コード内の制約の例:
// Freeze rotation on all axes.
GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezeRotation
// Freeze position on all axes.
GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezePosition
// Freeze rotation and motion an all axes.
GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezeAll
ビット単位のOR演算子を使用できます|
次のように複数の制約を組み合わせる:
// Allow rotation on X and Y axes and motion on Y and Z axes.
GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezePositionZ |
RigidbodyConstraints.FreezeRotationX;
衝突
Rigidbodyを搭載したGameObjectで衝突に反応させたい場合は、Colliderを追加する必要があります。コライダーのタイプは次のとおりです。
- ボックスコライダー
- 球体衝突器
- カプセルコライダー
- ホイール衝突者
- メッシュコライダー
GameObjectに複数のコライダーを適用する場合は、複合コライダーと呼びます。
OnTriggerEnter()
、 OnTriggerStay()
およびOnTriggerExit()
メソッドを使用するには、 トリガーにコライダーを作成できます。トリガーコライダーは物理的に衝突に反応せず、他のGameObjectは単にそれを通過します。それらは、アイテムを収集するときなど、別のGameObjectが特定の領域にあるかどうかを検出するのに便利です。
剛体の重力
useGravity
のプロパティRigidBody
重力がそれに影響を与えるかどうかを制御します。 false
設定するfalse
、 RigidBody
は(ある方向に一定の力を加えずに)宇宙空間のように動作します。
GetComponent<RigidBody>().useGravity = false;
これは、 RigidBody
他のすべての特性が重力で制御されたモーション以外の場合には非常に便利です。
有効にすると、 RigidBody
はPhysics Settings
で設定された重力の影響を受けます:
Gravityは、1秒あたりの世界単位で定義され、3次元ベクトルとしてここに入力されます。例の画像の設定では、 useGravity
プロパティがTrue
設定されたRigidBodies
は、 useGravity
9.81の世界単位下向き方向に毎秒 (ユニティの座標系の点において負のy値として下向き)。