UnityUnityメモ

クリック操作でオブジェクトを削除&「CLEAR」を表示する簡単な方法【Unity入門】

Unity

1. はじめに

Unityを使ったゲーム開発の中で、「クリック操作でオブジェクトを削除する」機能はよく使われる基本的なテクニックです。さらに、削除操作が完了したら「CLEAR」というメッセージを表示することで、操作の達成感をプレイヤーに伝えることができます。

今回は初心者向けに、この2つの機能を簡単なスクリプトを使って実現する方法を解説します。

特別なプログラミングスキルは必要ありません!一緒に楽しく進めていきましょう!

Unityを触ったことがないという方はコチラの記事から見てみてください!



2. プロジェクトの準備

まずはUnityでプロジェクトを準備しましょう!これから作成するプロジェクトでは、以下のステップを実行します。


1. 新しいプロジェクトを作成

  1. Unity Hubを開き、「新しいプロジェクト」をクリックします。
  2. テンプレートは「3D」を選択し、プロジェクト名を「ClickToClear」と設定して作成します。

2. シーンに3Dオブジェクトを配置

クリック操作で削除するオブジェクトを配置しましょう。ここでは、複数のキューブを使います。

  1. ヒエラルキーウィンドウで右クリック。
  2. 「3D Object」→「Cube」を選択してシーンに追加。
  3. 作成したCubeを複製(Ctrl+D / Cmd+D)して、好きな位置に5個配置します。
  • ヒント: キューブの色を変更してみましょう!
     1. ヒエラルキーのCubeをクリック。
     2. インスペクターで「Add Component」→「Material」を追加。
     3. 好きな色を設定します。

これでプロジェクトの準備は完了です!次はUIテキストを追加して「CLEAR」の表示を作っていきます。準備ができたら進みましょう!



3. UIテキストの追加

次に、オブジェクトをすべて削除した後に表示する「CLEAR」のテキストを作成します。このテキストはUIとして設定するので、画面にしっかりと表示されます。


1. UIテキストの作成

  1. ヒエラルキーウィンドウで右クリック。
  2. 「UI」→「Text (Legacy)」を選択します。
  3. 新しいUIオブジェクトがヒエラルキーに追加され、キャンバス(Canvas)も自動生成されます。

2. テキストの名前を変更

  1. ヒエラルキーで作成した「Text」を選択。
  2. 名前を「ClearText」に変更しておきます。

3. テキストの初期設定

  1. ヒエラルキーで「ClearText」を選択し、インスペクターを確認。
  2. 以下の設定を行います:
    • Text: 空白に設定(初期状態では何も表示しないため)。
    • Font Size: 30~50に設定(見やすい大きさに)。
    • Alignment: 中央揃え(HorizontalとVerticalの両方)。
    • Color: 好きな色(例: 白や赤)。

4. 位置とサイズの調整

  1. インスペクターの「Rect Transform」を使ってテキストの位置とサイズを調整します。
    • 位置: X=0, Y=0(画面中央に配置)。
    • サイズ: 幅と高さを適宜変更(例: Width=300, Height=100)。
  2. 必要であれば、背景に色をつけるために「Image」コンポーネントを追加して装飾を加えます。

5. テキストを非表示にする

最初は「CLEAR」の文字が表示されないようにします。

  1. ClearTextオブジェクトを選択
  2. インスペクターで「Enabled」のチェックを外す、もしくはスクリプトで空文字を設定します(後述)。

これで「CLEAR」テキストの追加は完了です!次に、クリック操作でオブジェクトを削除するスクリプトを作成して、テキストを動作させる準備をしましょう!



4. スクリプトの作成

ここでは、クリック操作でオブジェクトを削除し、全てのオブジェクトが削除されたときに「CLEAR」と表示するスクリプトを作成します。コードの内容を一つ一つ説明していくので、初心者の方でも安心してください!


1. スクリプトを作成する

  1. プロジェクトウィンドウで右クリック →「Create」→「C# Script」を選択します。
  2. 新しいスクリプトに「RemoveOnClick」と名前を付けます。

2. スクリプトの編集

作成したスクリプトをダブルクリックして開き、以下のコードを入力します。

using UnityEngine;
using UnityEngine.UI;

public class RemoveOnClick : MonoBehaviour
{
    private int count; // 削除したオブジェクトの数を記録する変数
    public Text clearText; // CLEARテキスト用のUIオブジェクト

    void Start()
    {
        count = 0; // 初期値を0に設定
        clearText.text = ""; // テキストを初期化(非表示)
    }

    void Update()
    {
        // マウスの位置からクリックされたオブジェクトを取得
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if (Input.GetMouseButtonDown(0)) // マウスの左クリックを検知
        {
            if (Physics.Raycast(ray, out hit)) // レイキャストでオブジェクトを検出
            {
                Destroy(hit.collider.gameObject); // 検出したオブジェクトを削除
                count++; // 削除数をカウント
            }
        }

        // 削除した数が指定数(例: 5個)に達したらCLEARを表示
        if (count == 5)
        {
            clearText.text = "CLEAR"; // テキストを表示
        }
    }
}

3. コードのポイント解説

  • Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    マウス位置からレイを飛ばして、クリックした場所を検出します。
  • Physics.Raycast(ray, out hit)
    レイがオブジェクトに当たった場合、そのオブジェクトを取得します。
  • Destroy(hit.collider.gameObject);
    クリックされたオブジェクトを削除します。
  • count == 5
    指定した数(ここでは5個)のオブジェクトが削除されたら、CLEARメッセージを表示します。



5. スクリプトの設定

スクリプトを作成したら、Unity上で適切に設定する必要があります。このステップでは、スクリプトを動作させるための設定を行います。

1. スクリプトをアタッチ

  1. ヒエラルキーウィンドウで右クリック →「Create Empty」を選択し、空のゲームオブジェクトを作成。
  2. 作成したゲームオブジェクトに「RemoveOnClick」スクリプトをドラッグ&ドロップしてアタッチします。

2. UIテキストをスクリプトに設定

  1. 作成したゲームオブジェクトを選択。
  2. インスペクターでスクリプトの ClearText フィールドを確認。
  3. ヒエラルキーの「ClearText」オブジェクトをドラッグ&ドロップして設定します。

これでスクリプトの作成と設定は完了です!次は、実際に動作を確認しながら、スクリプトの挙動をチェックしてみましょう。



6. 実行と確認

すべての準備が整ったので、実際にプロジェクトを実行して動作を確認しましょう!以下の手順で進めてください。


1. プレイモードを開始

  1. Unityエディターの上部にある「▶︎」ボタン(Playボタン)をクリックしてプレイモードを開始します。
  2. シーンビューがゲームビューに切り替わり、実際のプレイ画面が表示されます。

2. 動作を確認

  1. 3Dオブジェクトをクリックして削除します。
    • オブジェクトが消えることを確認してください。
    • 削除されるたびにカウントが進んでいるはずです。
  2. すべてのオブジェクトを削除したら、画面中央に「CLEAR」と表示されることを確認します。

3. 問題が発生した場合

以下のような問題が発生した場合は、原因と解決方法を確認してください:

1. クリックしてもオブジェクトが削除されない

  • 解決方法: 削除対象のオブジェクトに「Collider」が正しく設定されているか確認します。
    • ヒエラルキーでオブジェクトを選択し、インスペクターで「Box Collider」などがあるか確認してください。

2. 「CLEAR」が表示されない

  • 解決方法:
    • スクリプトのcountの値と削除するオブジェクト数が一致しているか確認します(例: スクリプトでは5個が基準になっています)。
    • ClearTextフィールドがスクリプトに正しくリンクされているか確認します。

3. テキストが見えない

  • 解決方法:
    • テキストのフォントサイズやカラー設定が適切か確認します。特に背景と同化していないか注意してください。

4. 調整と改善

スクリプトやオブジェクト設定を見直して、必要に応じて改善しましょう。Unityのコンソールウィンドウにエラーメッセージが出ている場合、その内容を確認して修正してください。


これで、クリック操作でオブジェクトを削除し、すべて削除されたら「CLEAR」を表示する機能の実行が完了しました!お疲れさまでした。これを基に、さらに複雑な動作やゲームプレイに発展させていきましょう!



よくある質問

Q
オブジェクトが削除されないのですが?
A

ヒエラルキーのオブジェクトにColliderが設定されているか確認してください。Colliderがないとクリック検出ができません。

Q
「CLEAR」のテキストが表示されません。
A

スクリプトのcountの値と削除するオブジェクト数が一致しているか確認してください。

Q
Textが見えないのですが?
A

Textのフォントサイズやカラーが背景に埋もれていないか確認してください。