Unity にはオブジェクトを物理法則に従って動かす物理エンジンが組み込まれています。このページでは、スクリプトからコンポーネントを追加する方法と、物理演算を担う Rigidbody コンポーネントを学びます。
AddComponent<T>() を使ってコンポーネントをスクリプトから追加できるUnity Inspector ビューから手動でコンポーネントを追加できますが、スクリプトからも追加できます。
GameObject.AddComponent<T> — ゲームオブジェクトにコンポーネントを追加します。
書式:GameObject.AddComponent メソッド
1
public T AddComponent<T>() where T : Component;
| 型パラメータ | 説明 |
|---|---|
T |
追加するコンポーネントの型 |
使い方はこれまでのメソッドと少し異なり、丸括弧 () の前に 山括弧 <> を付けて追加したいコンポーネントの型を指定します。
1
gameObject.AddComponent<Rigidbody>();
💡 ポイント: 通常のパラメータは
()に入れて「値」を渡しますが、型パラメータは<>に入れて「型」を渡します。AddComponent<Rigidbody>()のRigidbodyは値ではなく、「どの型のコンポーネントを追加するか」を指定しています。
Rigidbody コンポーネントを追加すると、そのオブジェクトは Unity の物理エンジンによって管理されます。重力・衝突・摩擦といった物理的な挙動が自動的に計算されます。
こうした物理法則をゼロからプログラムするのは非常に複雑ですが、Rigidbody を追加するだけで Unity が肩代わりしてくれます。
1
2
3
4
5
6
7
8
9
10
using UnityEngine;
public class Sample : MonoBehaviour
{
private void Start()
{
var sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
sphere.AddComponent<Rigidbody>();
}
}
Rigidbody を追加した球体は、ゲーム開始と同時に重力で落ちていきます。
💡 ポイント: ステージ(地面)には Rigidbody を追加しません。Rigidbody がついたオブジェクトは重力の影響を受けて落下してしまうためです。
Rigidbody を追加した後でも、Inspector ビューで Is Kinematic をオンにすると物理エンジンの制御を無効化し、スクリプトから直接位置・回転を制御できます。物理演算と直接制御を使い分けたい場面で役立ちます。
AddComponent<Rigidbody>() で物理演算コンポーネントをスクリプトから追加できる<T> の T に追加したいコンポーネントの型を指定するAddComponent<Rigidbody>() を呼ぶと何が起きますか?<Rigidbody> の山括弧 <> は何の役割がありますか?<Rigidbody> であれば Rigidbody コンポーネントを追加することを表す。チュートリアル: ドミノ倒し では、これまで学んだすべてを組み合わせてドミノ倒しのシミュレーションを完成させます。