Lightning Blog
Unity記事イメージ画像

【Unity】 衝突判定について

更新日:2023/07/20
ゲーム開発において、使用率が高いと思われる衝突判定について解説します。

    目次

  • 衝突判定するための設定

衝突判定するための設定

セクション画像

まず、衝突を行うCubeオブジェクトを用意します。[Hierarchy]の左上の+ボタンから[3Dオブジェクト]→[Cube]を選択し、正方形のオブジェクトを作成します。

Cubeの場所
Cubeの場所

衝突判定を行うためには、まず検知を行うための[Collider]と呼ばれるコンポーネントをゲームオブジェクトに追加する必要があります。 [Collider]には様々な形状のものがありますが、今回は[BoxCollider]と呼ばれる正方形の形状のものを使用します。先ほど作成したCubeには、 既にデフォルトでこのBoxColliderが付与されています。

BoxCollider
BoxCollider

自分で一から作成したオブジェクトに衝突判定を付与するには、[Add Component]のボタンをクリックし、形状にあったColliderを選択する必要があります。

Add Component
Add Component

このオブジェクトを重力で落下させて、オブジェクトを衝突させたいので、[RigidBody]と呼ばれるコンポーネントを追加します。

RigidBody
RigidBody

位置を落下スタート地点へ移動します。今回はXYZを図のような位置にします。

Cubeの位置
Cubeの位置

もう一つ同じ要領で、Cubeオブジェクトを作成します。この際、RigidBodyは追加で付与しなくて大丈夫です。

Cubeを追加
Cubeを追加

オブジェクトの位置を原点(positionが全て0)へ移動します。

Cubeの位置
Cubeの位置

この状態でゲームを開始すると、オブジェクトが落下し衝突することが確認できます。

衝突確認
衝突確認

衝突することが確認できたら、次は衝突後の処理を書いていきます。今回は衝突したら、コンソールに[衝突した!!]と表示するプログラムです。


using UnityEngine;

public class CollisionDetector : MonoBehaviour
{
    private void OnCollisionEnter(Collision collision)
    {
        Debug.Log("衝突した!!");
    }
}

動作を確認してみます。コンソールに以下のように表示されていれば、成功です。

コンソール結果
コンソール結果

この処理の部分をオブジェクト削除などに、書き換えていくとゲームらしくなっていきますね。色々試してみると面白いかもしれません。


ブログ内の記事で書かれているサンプルコードは、GitHubから確認する事ができます。 是非参考にしてみてください。

この本では、Unityの基本から高度なテクニックまで、実際のプロジェクトに役立つ知識を網羅しています。 初心者から経験者まで、Unityを扱うすべての開発者にとっての必読書です。

この本を読んで、あなたのUnityスキルを飛躍的に向上させませんか?

合わせて読みたい

カード画像
SQLiteのEntityFrameworkを利用する

この記事では、UnityでSQLiteのEntityFrameworkを活用する方法を詳細に説明しています。オープンソースの軽量RDBMSであるSQLiteの導入から、Entity Frameworkを用いてデータベースのテーブルをクラスで表現し、データの読み書きを行う方法までを解説。ライブラリのインストール、DBファイルの作成、テーブルの作成、エンティティとDBコンテキストの設定に至るまでのプロセスが具体的に示されています。Unity開発者にとって、ゲーム内データ管理を効率化する貴重な情報源です。

更新日:2024/03/18

An error has occurred. This application may no longer respond until reloaded. Reload 🗙