Unityで物理演算、物理シミュレーション機能を提供するクラス「Regidbody2D」の解説とリファレンスです。
リファレンス
スクリプト上で使用するプロパティ
| プロパティ名 | 型 | 説明 |
|---|---|---|
| velocity | Vector2 | オブジェクトの現在の速度 |
メソッド
| 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 Type | RigidbodyType2D | Dynamic, Kinematic, Static |
| Material | Physics Material 2D | 摩擦係数を設定できる (Collider2D側で設定すると無視される) |
| Simulated | bool | 物理演算の適応、非適応 |
| Mass | float | 質量 |
| Auto Mass | bool | オブジェクトのサイズから自動で質量を計算する |
| Linear Drag | float | 空気抵抗(直線移動の減速) |
| Linear Drag | float | オブジェクトが回転する時の抵抗(回転の減速) |
| Gravity Scale | float | 重力 |
| Collision Detection | 選択 | すり抜けをするかしないかの選択 (ものすごい速さでオブジェクトに向かった時など) Discrete: すり抜ける, Continuous: すり抜け防止 |
| Constraints | float | 制約をかけられる。x,yの位置制約や、zの回転の制約。 制約をかけたところは動かなくなる。 |
参考リンク
こちらの記事に利用例を載せていますのでご参考ください。
→ Regidbody2D と Joystick Pack を利用してキャラを飛行させる

0 件のコメント:
コメントを投稿