2025年3月23日日曜日

【Unity 2D】Regidbody2D リファレンス

Unityで物理演算、物理シミュレーション機能を提供するクラス「Regidbody2D」の解説とリファレンスです。

リファレンス

スクリプト上で使用するプロパティ

プロパティ名説明
velocityVector2オブジェクトの現在の速度

メソッド

void AddForce( Vector2, ForceMode2D = ForceMode2D.Force )
オブジェクトに力を与える関数。力を与えて物理的な動きをさせたいときに利用する。
戻り値void
引数Vector2与える力の大きさと方向
ForceMode2D力の与え方。Force or Impulse。
Force: 継続的な力を与える場合に利用する。FixedUpdate内で利用する。
Impulse: 一度に力を与えるときに利用する、ボタンを押してジャンプ、発射するなど。

ForceMode2D 補足

ForceMode2D.Force

// ForceMode2D.Force の場合は、FixedUpdate内で利用
// 継続的な力を加え、徐々に速度を変化させる
// 力をかけ続けただけオブジェクトも加速していく
void FixedUpdate()
{
    float move = Input.GetAxis("Horizontal"); // 左右の矢印キー押下時に値を得られる
    rb.AddForce(Vector3.forward * move * 10f, ForceMode.Force); // 継続的な力を与える
}

ForceMode2D.Impulse

// ForceMode2D.Impulse の場合は、一度に力を与える
// ジャンプ、発射など、その瞬間で速度を変化させたいときに利用
void Update()
{
    // スペースキー押下時だけオブジェクトに力を与える
    if (Input.GetKeyDown(KeyCode.Space)) 
    {
        rb.AddForce(Vector3.up * 5f, ForceMode.Impulse);
    }
}

インスペクター上に表示されるプロパティ

Regidbody2DのInspector上のプロパティ

プロパティ名説明
Body TypeRigidbodyType2DDynamic, Kinematic, Static
MaterialPhysics Material 2D摩擦係数を設定できる
(Collider2D側で設定すると無視される)
Simulatedbool物理演算の適応、非適応
Massfloat質量
Auto Massboolオブジェクトのサイズから自動で質量を計算する
Linear Dragfloat空気抵抗(直線移動の減速)
Linear Dragfloatオブジェクトが回転する時の抵抗(回転の減速)
Gravity Scalefloat重力
Collision Detection選択すり抜けをするかしないかの選択
(ものすごい速さでオブジェクトに向かった時など)
Discrete: すり抜ける, Continuous: すり抜け防止
Constraintsfloat制約をかけられる。x,yの位置制約や、zの回転の制約。
制約をかけたところは動かなくなる。

参考リンク

こちらの記事に利用例を載せていますのでご参考ください。
Regidbody2D と Joystick Pack を利用してキャラを飛行させる

0 件のコメント:

コメントを投稿

【注目記事】

ゲーム用ドット絵の配色は「LOSPEC」で解決!