UnityUnityの使い方

Unityの使い方⑩ Colliderでオブジェクトを衝突させてみよう

Unity

1. はじめに

こんにちは!Unityの使い方シリーズ第10回へようこそ!

「Colliderって名前は聞いたことあるけど、実際どうやって使うの?」と思う方も多いはず。
この記事では、Colliderを使ってオブジェクトをぶつける基本的な使い方を、初心者にも分かりやすく解説していきます。

2. Colliderとは?

さて、まずは「Collider(コライダー)」について説明しますね!
Colliderは、オブジェクト同士の「当たり判定」を作るためのコンポーネントです。ゲームでオブジェクトがぶつかるとき、このColliderが「どこでぶつかったか」を判断してくれるんです。

Colliderの役割

  • オブジェクトが他のオブジェクトとぶつかったかを検知する。
  • 衝突の挙動(例えば跳ね返る、止まるなど)をサポートする。
  • 見た目の形とは別に「当たり判定」の形を定義する。

たとえば、見た目が丸いボールでも、正確な丸ではなく「ざっくりした円形」の当たり判定をつけることで処理が軽くなることがあります。


代表的なColliderの種類

UnityにはいくつかのColliderが用意されています。ここでは、よく使うものを3つだけ紹介します。

  1. Box Collider
    • 四角い当たり判定を作る。
    • Cube(箱)のオブジェクトに最初からついている。
    • 建物や壁などの「直方体っぽいもの」に便利。
  2. Sphere Collider
    • 丸い当たり判定を作る。
    • ボールや惑星など「球体のもの」にぴったり。
  3. Capsule Collider
    • カプセル型(細長い円柱+半球)の当たり判定を作る。
    • キャラクターの体や細長いものに使われることが多い。

これらのColliderをオブジェクトに設定することで、ぶつかったときの挙動をコントロールできるようになります。


注意点: Colliderだけでは動かない!

Colliderは「当たり判定」だけを担当していて、それ自体ではオブジェクトを動かしたり物理挙動を加えたりすることはできません。
オブジェクトを動かしたい場合には、「Rigidbody(リジッドボディ)」というコンポーネントを一緒に使う必要があります。これについては前の記事で詳しく説明していますね!


Colliderはゲームを作る上でとっても重要な要素です。次は、実際にUnityでColliderを設定して、オブジェクト同士をぶつけてみましょう!




3. UnityでColliderを設定する手順

ここからは、UnityでColliderを設定していく具体的な手順を解説していきます。やることはとってもシンプルなので、一緒に進めてみてください!


(1) 3Dオブジェクトを配置する

まずは、Colliderを設定するためのオブジェクトをUnityシーンに作ります。

  1. ヒエラルキーウィンドウを右クリックします。
  2. メニューが出てくるので「3D Object」→「Cube」を選択します。
  3. シーン内にCubeが配置されます。これが衝突の「的」になるオブジェクトです。

次に、Cubeの位置を調整して地面っぽくします。

  • Cubeを選択して、インスペクターウィンドウで「Transform」の「Scale」を編集します。
    • X: 5, Y: 0.5, Z: 5 にすると地面っぽくなります!

これで、まずは1つ目のオブジェクトが完成です。わかりやすいようにMaterialで色を変更しておきます。


(2) Colliderを確認する

Cubeを選択した状態で、インスペクターウィンドウを見てみましょう。

  • Box Collider」というコンポーネントがすでに付いているはずです。
  • Box ColliderがデフォルトでCubeに設定されているので、新しく追加する必要はありません。

もし「別の形の当たり判定を作りたい」ときは、この部分を変更すればOKです。


(3) 動かすオブジェクトを追加する

次に、動かすためのオブジェクトを作ります。今回はSphere(球体)を使いましょう。

  1. 再びヒエラルキーウィンドウを右クリック。
  2. 3D Object」→「Sphere」を選択します。
  3. シーン内にSphereが配置されます。これがCubeにぶつかる「動くオブジェクト」になります。

(4) Colliderを確認する

Sphereを選択した状態でインスペクターウィンドウを見てみましょう。

  • Sphereには「Sphere Collider」というコンポーネントが付いています。これもデフォルト設定です。

この状態で、SphereとCubeの間に「当たり判定」がある状態が出来上がりました!


(5) オブジェクトの配置を調整する

最後に、SphereがCubeにぶつかるように位置を調整しましょう。

  1. Sphereを選択して、インスペクターウィンドウの「Transform」で「Position」を次のように設定します。
    • X: 0, Y: 5, Z: 0
      → これでSphereがCubeの真上に配置されます。
  2. Cubeはそのまま地面として固定しておいてください。
    • CubeのPositionは「X: 0, Y: 0, Z: 0」にしておきましょう。

次は「Rigidbody」を使ってSphereを動かし、実際にCubeにぶつけてみましょう。




4. Rigidbodyを使ってオブジェクトを動かす

さて、次はSphereを動かしてCubeにぶつけてみます!
Sphereを動かすには「Rigidbody(リジッドボディ)」というコンポーネントを追加します。
このRigidbodyが、Unityで物理的な動きを再現してくれる大事な役割を果たします。


(1) Rigidbodyを追加する

  1. ヒエラルキーウィンドウでSphereを選択します。
  2. インスペクターウィンドウの下部にある「Add Component」ボタンをクリックします。
  3. 検索欄に「Rigidbody」と入力し、表示された「Rigidbody」を選択して追加します。

これで、Sphereに物理演算を適用する準備が整いました!
Rigidbodyを追加すると、次のような動きが自動的に適用されます:

  • 重力によって下に落ちる。
  • 他のオブジェクトとぶつかったときに跳ね返る、止まるなどの物理的な反応をする。

(2) Rigidbodyの基本設定

Rigidbodyを追加しただけでも動きますが、設定を少し確認してみましょう。

  1. Mass(質量)
    • デフォルト値は「1」です。大きな値にするとオブジェクトが重くなり、動きにくくなります。
  2. Use Gravity(重力を使う)
    • これにチェックが入っていると、重力によって下に落ちます。SphereがCubeにぶつかる動きを作るには、このチェックはオンのままでOKです。
  3. Constraints(拘束)
    • 特定の軸の動きや回転を固定したいときに使います。今回は特に変更する必要はありません。

(3) シミュレーションを実行する

  1. Rigidbodyを追加した状態で、**再生ボタン(Play)**を押してみましょう。
  2. Sphereが重力で落ちていき、Cubeに「コツン!」とぶつかるのが確認できます。

(4) 問題があった場合のチェックポイント

もしSphereがうまく動かなかったり、Cubeにぶつからなかったりした場合は次の点を確認してください:

  • Sphereの「Rigidbody」が正しく追加されているか。
  • Cubeの「Box Collider」が削除されていないか。
  • SphereとCubeの位置が正しく配置されているか(SphereがCubeの真上にあるか)。

これで、Rigidbodyを使って物理挙動を適用する方法を学びました!
次は、オブジェクトがぶつかったときに「どんな挙動をするのか」を少しカスタマイズしてみましょう。



5. Colliderの挙動をカスタマイズ

Colliderは「オブジェクトがぶつかったかどうか」を検知する役割を持っていますが、その挙動をカスタマイズすることで、さまざまな動きを実現できます。このセクションでは、ColliderのTriggerモードサイズの変更、さらには衝突の検知方法について解説していきます。


1. Triggerモードの活用

Triggerモードとは、Colliderを物理的な衝突から外して、単に「衝突の検知」のみを行うモードです。たとえば、ゲーム内でプレイヤーがアイテムに触れたら取得される、といった場面でよく使われます。

Triggerモードの設定手順

  1. CubeまたはSphereを選択します(今回はCubeを例に)。
  2. インスペクターウィンドウで「Box Collider」を探します。
  3. Is Trigger」というチェックボックスを見つけて、チェックを入れます。

これでCubeは「衝突しても物理的な反応をしないオブジェクト」になります。ただし、この状態でもスクリプトを使えば、何かが触れたことを検知できます(スクリプトについては後ほど説明します)。

Triggerモードの動作例

  • SphereがCubeに触れたときに何か特定のイベントを発生させたいときに使用します。
  • Triggerモードでは物理的な「ぶつかり合い(跳ね返り)」は発生しませんが、衝突を認識できます。

2. Colliderのサイズを変更する

Colliderのサイズをオブジェクトの形状やゲームの要件に合わせて調整することも可能です。デフォルトでは、Colliderはオブジェクトの見た目(Mesh)に一致していますが、実際には自由に変更できます。

サイズ変更の手順

  1. CubeまたはSphereを選択します。
  2. インスペクターウィンドウの「Box Collider」または「Sphere Collider」を探します。
  3. Edit Collider」ボタンをクリックします。
  4. シーンビューで、Colliderのサイズを直接ドラッグして調整します。

サイズ変更の用途

  • 小さな当たり判定を作りたい場合(例えばキャラクターの足元だけに反応する判定を作る)。
  • オブジェクトの見た目と当たり判定が異なる場合(複雑な形状のオブジェクトに適した判定を設定したいとき)。

3.CollisionとTriggerの違い

  • コリジョン(Collision)
    オブジェクト同士が衝突した際に、物理的な反応をするモード。
    • 例: ボールが壁にぶつかって跳ね返る。
    • Rigidbodyが必要。
    • デフォルトで使用されるモード。
  • Trigger
    物理的な反応をせずに、衝突の検知だけを行うモード。
    • 例: プレイヤーがアイテムに触れたら取得される。
    • Rigidbodyがなくても動作可能。
    • 「Is Trigger」にチェックを入れるだけで設定可能。

4. 衝突の検知方法

オブジェクトがぶつかったときに「どのオブジェクトとぶつかったか」をスクリプトで確認することができます。

基本的なスクリプト例

以下のスクリプトを使って、Colliderが衝突を検知してみましょう。

  1. プロジェクトウィンドウを右クリックして「Create」→「C# Script」を選びます。
  2. スクリプト名を「CollisionHandler」にします。
  3. スクリプトを以下のように書き換えます。
using UnityEngine;

public class CollisionHandler : MonoBehaviour
{
    // 通常の衝突検知
    void OnCollisionEnter(Collision collision)
    {
        Debug.Log("コリジョンで衝突しました: " + collision.gameObject.name);
    }

    // Triggerモードでの衝突検知
    void OnTriggerEnter(Collider other)
    {
        Debug.Log("Triggerで衝突を検知: " + other.gameObject.name);
    }
}
  1. 作成したスクリプトをCubeやSphereにドラッグ&ドロップしてアタッチします。

動作確認

  • 再生ボタンを押してSphereがCubeにぶつかると、コンソールウィンドウにメッセージが表示されるはずです。
    • 通常の衝突: SphereがCubeに物理的にぶつかる。
    • Triggerモード: Sphereが触れたことを検知するが、物理的な反応はない。



まとめ

今回は、Unityでオブジェクトを衝突させる方法について学びました!
ColliderとRigidbodyを使うだけで、オブジェクト同士のリアルな物理挙動を再現することができるんですね。さらに、スクリプトを使えば衝突のタイミングでイベントを発生させたり、アクションを追加したりと、ゲームらしい動きを作れるようになります。


Unityを使えば、アイデア次第でどんなゲームでも作れそうですよね!
ただ、最初は覚えることが多くて少し大変かもしれません。でも、こうした基本を積み重ねることで、どんどん本格的なゲームを作れるようになりますよ。


Unity初心者でも簡単!アセットを活用してゲーム開発を加速しよう!

Unity Asset Storeには、初心者でもすぐに使える便利なアセットがたくさんあります。
でも「どれを使えばいいの?」「どう活用すればいいの?」と迷っていませんか?

この記事では、初心者向けのおすすめアセットとその活用法を詳しく解説!
ゲーム開発をもっと楽しく、効率的に進めたいなら必見です!



8. よくある質問 (Q&A)

Q
ColliderとRigidbodyはどちらも必要ですか?
A

基本的に、物理的な動きをシミュレーションする場合はRigidbodyが必要です。静止しているオブジェクトの場合はColliderだけでOKです。


Q
オブジェクトがぶつかっても反応しないのはなぜですか?
A

Rigidbodyが追加されていない可能性があります。または、「Is Trigger」にチェックが入っている場合も物理的な反応はなくなります。


Q
複雑な形のColliderを作りたい場合はどうすればいいですか?
A

「Mesh Collider」を使うことで、複雑な形状に対応できます。ただし、動くオブジェクトには向いていないので注意が必要です。