Skip to content

Rigidbody Component ​

3D物体の重力・速度・力・接触応答を制御します。

設定する手順 ​

  1. Collisionを設定し、Dynamic/Kinematic/Staticと質量を選びます。
  2. SceneViewまたはGameViewで結果を確認します。
  3. 編集中のSceneまたはPrefabを保存します。

項目の説明 ​

項目C#名型操作定義時の初期値意味
BodyTypeBodyTypeRigidbodyType読取・変更RigidbodyType::DynamicDynamicは物理で動き、Kinematicはゲーム処理、Staticは固定物として扱います。
CollisionDetectionCollisionDetectionCollisionDetectionMode読取・変更CollisionDetectionMode::Discrete接触を検出する方式です。
質量Massfloat読取・変更1.0f質量です。Dynamicの力に対する動き方に影響します。
重力を使うUseGravitybool読取・変更true重力を受けるかを指定します。
重力倍率GravityScalefloat読取・変更1.0f重力へ掛ける倍率です。
速度減衰LinearDampingfloat読取・変更0.0f並進速度の減衰です。
はね返り率Restitutionfloat読取・変更0.0f跳ね返りの強さです。
摩擦の強さFrictionfloat読取・変更0.4f接触面での摩擦です。
角速度減衰AngularDampingfloat読取・変更0.05f回転速度の減衰です。
X位置を固定FreezePositionXbool読取・変更falseX方向の移動を固定します。
Y位置を固定FreezePositionYbool読取・変更falseY方向の移動を固定します。
Z位置を固定FreezePositionZbool読取・変更falseZ方向の移動を固定します。
支点が外れたら倒れるAllowTopplebool読取・変更false物体が倒れる回転を許可します。
初速度LinearVelocityVector3読取・変更Vector3::AnyInit(0.0f)現在の並進速度です。
AngularVelocityAngularVelocityVector3読取・変更Vector3::AnyInit(0.0f)現在の回転速度です。
AccumulatedForceAccumulatedForceVector3読取・変更Vector3::AnyInit(0.0f)次の物理更新へ渡す累積力です。
AccumulatedTorqueAccumulatedTorqueVector3読取・変更Vector3::AnyInit(0.0f)次の物理更新へ渡す累積トルクです。

Inspectorの設定と使い方 ​

「Editor / C#」は両方から変更できる設定、「Editorのみ」は公開C# APIのない編集操作です。「Editor表示のみ」は計算結果や統計などの確認欄です。「C#のみ」は、このInspectorに編集欄のない操作です。

設定・操作編集場所C#の入口意味・使い方
種別・衝突検出Editor / C#BodyType / CollisionDetectionDynamicは物理で動く物体、Kinematicはゲーム処理で動かす物体、Staticは固定物向けです。Discreteは通常の離散判定、Continuousは高速移動時のすり抜けを抑えるための方式です。Collisionの3D形状も必要です。
質量・重力・速度減衰Editor / C#Mass / UseGravity / GravityScale / LinearDamping / AngularDamping質量と重力倍率、移動・回転の減衰を指定します。減衰を大きくすると速度が落ちやすくなります。固定更新で力を加え、描画frameごとにTransformで結果を上書きしないようにします。
摩擦・はね返り・初速度Editor / C#Friction / Restitution / LinearVelocity接触時の滑りやすさ、跳ね方、初期の移動速度です。Frictionは描画MaterialのRoughnessとは別の物理値です。
位置固定・倒れ方Editor / C#FreezePositionX / FreezePositionY / FreezePositionZ / AllowTopple移動させたくない軸を固定します。AllowToppleは支点が外れた場合の倒れ方の指定です。全軸固定とStatic/Kinematicの目的を混同しないでください。
力・トルクC#のみAddForce / AddTorque / AngularVelocityForceは継続した力、Impulseは一度の衝撃などに使います。入力をUpdateで受け、FixedUpdateへ要求を渡すと、描画FPSに応じた入力の取りこぼしを避けられます。

初期値はEngineのComponent定義時の値で、C++表記を含みます。C#へ貼り付ける実行例ではありません。既存Sceneの保存値や既定Assetがある場合はそちらが優先されます。数値の編集範囲はInspectorで制限される場合があります。

C#から使う ​

操作型はRigidbodyです。 GameObjectから取得する基本操作はGameObjectの操作を参照してください。以下には基本プロパティだけでなく、公開関数・追加の設定API・継承した共通操作も掲載します。

実用例:キー入力を固定更新へ渡して衝撃を加える ​

RigidbodyをDynamicにし、3DのCollisionを用意します。この例は衝撃の加え方です。連続ジャンプを制限する接地判定はゲーム側へ追加します。

cs
using NEMEngine;

public sealed class PhysicsJump : MonoBehaviour {

    [SerializeField, Min(0.0f)] private float jumpImpulse = 5.0f;
    private Rigidbody? body;
    private bool jumpRequested;

    void Start() {
        // 物理更新で使う参照を保持
        body = GetComponent<Rigidbody>();
    }

    void Update() {
        // 短いキー入力を次の固定更新まで保持
        if (Input.GetKeyDown(KeyCode.Space)) jumpRequested = true;
    }

    void FixedUpdate() {
        // 1回の入力につき1回だけ上向きの衝撃を加える
        if (!jumpRequested || body == null) return;
        jumpRequested = false;
        body.AddForce(new Vector3(0.0f, jumpImpulse, 0.0f), ForceMode.Impulse);
    }
}

選択値(Enum) ​

型・各値の詳説使える値
CollisionDetectionModeContinuous / Discrete
ForceModeAcceleration / Force / Impulse / VelocityChange
RigidbodyTypeDynamic / Kinematic / Static

Rigidbody ​

宣言・詳説種類・操作役割
public Vector3 AccumulatedForceプロパティ(読取・変更)次の物理更新へ渡す累積力です。
public Vector3 AccumulatedTorqueプロパティ(読取・変更)次の物理更新へ渡す累積トルクです。
public void AddForce(Vector3 force, ForceMode mode = Force)関数力を加える、mode で連続/瞬間と質量の扱いを切り替える
public void AddTorque(Vector3 torque, ForceMode mode = Force)関数トルクを加える、回転軸×大きさのベクトルで指定する
public bool AllowToppleプロパティ(読取・変更)物体が倒れる回転を許可します。
public float AngularDampingプロパティ(読取・変更)回転速度の減衰です。
public Vector3 AngularVelocityプロパティ(読取・変更)現在の回転速度です。
public RigidbodyType BodyTypeプロパティ(読取・変更)Dynamicは物理で動き、Kinematicはゲーム処理、Staticは固定物として扱います。
public CollisionDetectionMode CollisionDetectionプロパティ(読取・変更)接触を検出する方式です。
public bool FreezePositionXプロパティ(読取・変更)X方向の移動を固定します。
public bool FreezePositionYプロパティ(読取・変更)Y方向の移動を固定します。
public bool FreezePositionZプロパティ(読取・変更)Z方向の移動を固定します。
public float Frictionプロパティ(読取・変更)接触面での摩擦です。
public static Rigidbody FromEntity(GameObject gameObject)関数既にComponentを持つGameObjectから操作用の参照を作ります。Componentを追加する操作ではありません。
public float GravityScaleプロパティ(読取・変更)重力へ掛ける倍率です。
public float LinearDampingプロパティ(読取・変更)並進速度の減衰です。
public Vector3 LinearVelocityプロパティ(読取・変更)現在の並進速度です。
public float Massプロパティ(読取・変更)質量です。Dynamicの力に対する動き方に影響します。
public float Restitutionプロパティ(読取・変更)跳ね返りの強さです。
public bool UseGravityプロパティ(読取・変更)重力を受けるかを指定します。
public static int componentTypeIDプロパティ(読取専用)組み込みComponentの接続識別子です。通常のゲームコードではGetComponentで取得します。

継承する共通操作:Component ​

宣言・詳説種類・操作役割
public T AddComponent<T>() where T : Component関数ComponentまたはScriptを追加し、操作する参照を返します。
public T? GetComponent<T>() where T : class関数component access(owner GameObjectへの委譲)
public T? GetComponentInChildren<T>(bool includeInactive = false) where T : class関数子階層から指定型のComponentを探します。
public T? GetComponentInParent<T>(bool includeInactive = false) where T : class関数親階層から指定型のComponentを探します。
public T[] GetComponents<T>() where T : class関数同じGameObjectにある指定型のComponentをすべて取得します。
public void GetComponents<T>(List<T> results) where T : class関数同じGameObjectにある指定型のComponentをすべて取得します。
public T[] GetComponentsInChildren<T>(bool includeInactive = false) where T : class関数子階層にある指定型のComponentを収集します。
public void GetComponentsInChildren<T>(bool includeInactive, List<T> results) where T : class関数子階層にある指定型のComponentを収集します。
public void GetComponentsInChildren<T>(List<T> results) where T : class関数子階層にある指定型のComponentを収集します。
public T[] GetComponentsInParent<T>(bool includeInactive = false) where T : class関数親階層にある指定型のComponentを収集します。
public void GetComponentsInParent<T>(bool includeInactive, List<T> results) where T : class関数親階層にある指定型のComponentを収集します。
public override int GetHashCode()関数同じ値を検索Keyに使うためのHashを返します。
public bool HasComponent<T>() where T : class関数指定型のComponentを持つかを調べます。
public void RemoveComponent<T>() where T : Component関数指定型のComponentを取り除きます。
public bool TryGetComponent<T>(out T component) where T : class関数Componentを検索し、見つかったかをbool、結果をout引数で返します。
public GameObject gameObjectプロパティ(読取専用)このComponentを所有するGameObjectです。
public Transform transformプロパティ(読取専用)所有GameObjectのTransformです。

継承する共通操作:Object ​

宣言・詳説種類・操作役割
public static void Destroy(Object? target)関数参照先の個体だけを安全地点で破棄する
public override bool Equals(object? obj)関数2つの値が等しいかを調べます。
public override int GetHashCode()関数同じ値を検索Keyに使うためのHashを返します。
public static GameObject Instantiate(Prefab original)関数Prefabまたは指定したGameObject・Componentを複製して参照を返します。生成できない場合は例外です。nullを返す前提で処理しないでください。
public static GameObject Instantiate(Prefab original, GameObject? parent)関数Prefabまたは指定したGameObject・Componentを複製して参照を返します。生成できない場合は例外です。nullを返す前提で処理しないでください。
public static GameObject Instantiate(Prefab original, Vector3 position, Quaternion rotation)関数Prefabまたは指定したGameObject・Componentを複製して参照を返します。生成できない場合は例外です。nullを返す前提で処理しないでください。
public static GameObject Instantiate(Prefab original, Vector3 position, Quaternion rotation, GameObject? parent)関数Prefabまたは指定したGameObject・Componentを複製して参照を返します。生成できない場合は例外です。nullを返す前提で処理しないでください。
public static T Instantiate<T>(T original) where T : Object関数Prefabまたは指定したGameObject・Componentを複製して参照を返します。生成できない場合は例外です。nullを返す前提で処理しないでください。
public static T Instantiate<T>(T original, GameObject? parent) where T : Object関数Prefabまたは指定したGameObject・Componentを複製して参照を返します。生成できない場合は例外です。nullを返す前提で処理しないでください。
public static T Instantiate<T>(T original, Vector3 position, Quaternion rotation) where T : Object関数Prefabまたは指定したGameObject・Componentを複製して参照を返します。生成できない場合は例外です。nullを返す前提で処理しないでください。
public static T Instantiate<T>(T original, Vector3 position, Quaternion rotation, GameObject? parent) where T : Object関数Prefabまたは指定したGameObject・Componentを複製して参照を返します。生成できない場合は例外です。nullを返す前提で処理しないでください。
public static bool operator ==(Object? lhs, Object? rhs)関数等値比較を行います。引数型と戻り値型で、成分ごとの演算か対象参照の比較かを確認してください。
public static implicit operator bool(Object? value)関数暗黙の型変換を行います。引数型と戻り値型で、成分ごとの演算か対象参照の比較かを確認してください。
public static bool operator !=(Object? lhs, Object? rhs)関数不等値比較を行います。引数型と戻り値型で、成分ごとの演算か対象参照の比較かを確認してください。

使用時の注意 ​

物理で動かす物体はFixedUpdateで力や速度を変更します。Transformを毎frame強制設定すると物理結果と競合します。

Play中の変更は実行用Worldへ反映します。Scene編集のUndoと実行中の値の変更は別です。保存方法は編集と実行時変更を参照してください。

関連項目 ​

現行版マニュアル · 8ea58ba2 · 2026-10-28確認