UnityUnityメモ

Unity初心者向け!オブジェクトを複数回クリックで削除する方法

Unity

1. はじめに

「オブジェクトをクリックしたときの挙動」を制御する方法は、ゲーム開発の基本スキルの一つです。たとえば、敵キャラクターをクリックで倒したり、アイテムをタップして取得したりと、プレイヤーとゲームのインタラクションを実現するための重要なテクニックです。


この記事では、オブジェクトを複数回クリックしたら削除される仕組みを簡単に作る方法を解説します。この記事を通じて、以下のことが学べます。

  • Unityでのオブジェクトの配置方法
  • C#スクリプトでクリックイベントを処理する方法
  • オブジェクトを削除する「Destroy関数」の使い方

初めての方でもわかりやすいように、丁寧にステップを説明していきますのでご安心ください。一緒にUnityの楽しさを体験してみましょう!

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



2. 準備:Cubeの追加

このステップでは、シーンにCube(キューブ)を配置します。Cubeは、このチュートリアルでクリックイベントを確認するためのオブジェクトとして使用します。以下の手順に従って設定してください!


  1. Unityを開く
    プロジェクトを開き、空のシーンを用意しましょう。まだプロジェクトがない場合は、新規プロジェクトを作成してください。
  2. ヒエラルキーウィンドウでCubeを追加する
    • ヒエラルキー(Hierarchy)ウィンドウを右クリックします。
    • メニューが表示されたら、「3D Object」を選択し、さらに「Cube」をクリックします。
    • シーンにCubeが追加されます。
  3. Cubeの位置を調整する
    • Cubeが選択されている状態で、インスペクター(Inspector)ウィンドウを確認してください。
    • 「Transform」のセクションで、PositionのX、Y、Zをそれぞれ 0 に設定します。
      • 例: Position (0, 0, 0)
        これにより、Cubeがシーンの中心に配置されます。
  4. Cubeのサイズを変更(オプション)
    • 必要に応じて、Scale(スケール)を調整してください。
    • 例: Scale (2, 2, 2) とすると、Cubeが2倍の大きさになります。
  5. Cubeに名前を付ける(オプション)
    • ヒエラルキーウィンドウでCubeを右クリックし、「Rename」を選択します。
    • 名前を「ClickableCube」など、わかりやすいものに変更します。

これでシーンにCubeを追加する準備が完了しました!次は、スクリプトを作成してクリックイベントを設定していきましょう。



3. スクリプトの作成

このステップでは、クリックでオブジェクトを削除するためのスクリプトを作成します。以下の手順に従って進めてみましょう。

1. プロジェクトウィンドウでスクリプトを作成

  1. Unityエディターを開き、プロジェクトウィンドウで空いている場所を右クリックします。
  2. 表示されたメニューから、Create(作成)C# Script を選択してください。
  3. 新しいスクリプトが作成されるので、名前を ClickDestroy に変更します。

2. スクリプトを編集

  1. 作成したスクリプトをダブルクリックして、スクリプトエディター(通常はVisual Studio)で開きます。
  2. 次に、以下のコードをスクリプトにコピー&ペーストしてください。
using UnityEngine;

public class ClickDestroy : MonoBehaviour
{
    private int clickCount = 0; // クリックされた回数をカウントする変数

    // マウスでオブジェクトをクリックしたときに呼び出される関数
    private void OnMouseDown()
    {
        clickCount++; // クリック回数を増加させる
        Debug.Log("クリックされた回数: " + clickCount); // ログを表示する

        // クリック回数が5回に達したらオブジェクトを削除する
        if (clickCount >= 5)
        {
            Debug.Log("オブジェクトが削除されました"); // オブジェクト削除のログ
            Destroy(gameObject);
        }
    }
}

3. コードの保存

コードをすべて入力し終えたら、Ctrl + S(Macの場合はCommand + S)を押してスクリプトを保存してください。


ポイント解説

  • クリック回数のカウント:
    clickCount という変数で、クリックされた回数を追跡します。
  • クリックイベントの検出:
    OnMouseDown 関数は、オブジェクトがクリックされたときに自動的に呼び出されるUnityの標準関数です。
  • オブジェクトの削除:
    Destroy(gameObject) を使うことで、スクリプトがアタッチされたオブジェクトを削除できます。

これでスクリプトが完成しました!次のステップでは、このスクリプトをCubeにアタッチして動作を確認します。



4.スクリプトをオブジェクトにアタッチ

このセクションでは、作成したスクリプトをCubeにアタッチする方法を解説します。このステップを完了することで、クリックイベントが動作するようになります!


手順

  1. Cubeを選択する
    • シーンビューまたはヒエラルキーウィンドウで、先ほど追加したCubeをクリックして選択します。
    • Cubeが選択されると、インスペクターウィンドウにCubeの詳細情報が表示されます。
  2. プロジェクトウィンドウでスクリプトを探す
    • プロジェクトウィンドウで、作成したClickDestroyスクリプトを探します。
    • スクリプトは通常、Assetsフォルダ内に保存されています。
  3. スクリプトをCubeにドラッグ&ドロップ
    • ClickDestroyスクリプトをマウスでクリックして、そのままCubeにドラッグします。
    • Cubeが選択されている状態でインスペクターウィンドウを確認すると、スクリプトがアタッチされたのを確認できます。

確認方法

  • インスペクターウィンドウの下部に、「Click Destroy (Script)」という項目が追加されているか確認してください。
  • もし表示されていない場合、スクリプトをドラッグ&ドロップする際に正しいオブジェクトを選択しているかを再確認してください。

これでスクリプトのアタッチは完了です!次はゲームを実行して、実際にクリックでオブジェクトが削除されるかテストしてみましょう!



5.テストプレイと確認

さあ、ここまでの手順が完了したら、いよいよ作った仕組みが正しく動作するかテストしてみましょう!以下の手順に従ってテストを行います。


1. ゲームモードに切り替える

Unityエディターの上部にある「▶」(再生ボタン)をクリックして、ゲームモードに切り替えます。
ゲームビューが表示され、シーン内で作成したCubeが画面に表示されているはずです。


2. Cubeをクリックする

マウスカーソルをCubeの上に移動させてクリックします。
コンソールウィンドウ(下部または「Window」→「General」→「Console」で表示)に、次のようなログが出力されるはずです。

クリックされた回数: 1

さらに何回かクリックすると、クリック回数が増えていくログが表示されます。


3. 5回クリックで削除を確認する

Cubeを合計5回クリックしてみましょう。5回目のクリックで次のようなログが出力され、Cubeがシーンから消えるはずです。

クリックされた回数: 5
オブジェクトが削除されました

Cubeが画面上から消えたら成功です!お疲れさまでした。


4. テスト結果が想定通りでない場合

  • Cubeがクリックされても何も起こらない場合
    • Cubeにスクリプトが正しくアタッチされているか確認してください。
    • ヒエラルキーウィンドウでCubeを選択し、インスペクターにClickDestroyスクリプトが表示されていることをチェックしましょう。
  • エラーが出る場合
    • コンソールウィンドウに表示されるエラーメッセージを確認してください。
    • スクリプトにタイプミスや文法エラーがないか、もう一度コードを見直してみましょう。
  • クリックしても削除されない場合
    • スクリプト内のDestroy(gameObject)が正しく書かれているか確認してください。

これで、オブジェクトをクリックして削除する仕組みが完成です!動作を確認したら、自分なりにカスタマイズを加えて、より面白い機能を作ってみてくださいね。



よくある質問(FAQ)

Q
スクリプトを追加してもクリックしても反応しません。なぜですか?
A

以下のポイントを確認してください。

  • スクリプトのアタッチ: スクリプトがCubeオブジェクトに正しくアタッチされているか確認してください。
  • Colliderの有無: CubeオブジェクトにCollider(例えばBox Collider)が追加されているか確認してください。Colliderがないとクリックイベントが反応しません。
  • Playモード: Unityのゲームモード(Playモード)で動作をテストしていることを確認してください。
Q
クリック回数を変更するにはどうすればいいですか?
A

スクリプト内の以下のコードを変更してください。

if (clickCount >= 5)

この「5」を別の数字に変更すると、クリック回数を調整できます。例えば「10」にすれば、10回クリックすると削除されるようになります。

Q
クリック以外の条件でオブジェクトを削除するにはどうすればいいですか?
A

OnMouseDown関数を別のイベントに置き換えることで可能です。たとえば、特定のキーを押したときに削除したい場合は、以下のようにコードを変更します。

private void Update()
{
if (Input.GetKeyDown(KeyCode.Space)) // スペースキーが押されたとき
{
Destroy(gameObject);
Debug.Log("スペースキーでオブジェクトを削除しました");
}
}

この場合、OnMouseDownを削除してUpdate関数内に新しい条件を記述します。

おすすめのアセット

「Block Puzzle: Game Toolkit」は、Unityでブロックパズルゲームを簡単に作成できるツールキットです。このキットを使用することで、複雑なプログラミングなしに、魅力的なパズルゲームを開発できます。

主な特徴:

  • 多彩なゲームモード: クラシックモードやタイムアタックなど、複数のゲームモードをサポートしています。
  • カスタマイズ可能なUI: ユーザーインターフェースを自由に変更し、独自のデザインを実現できます。
  • 高品質なグラフィックス: 鮮やかで魅力的なビジュアルを提供し、プレイヤーの興味を引きます。

おすすめポイント:

  • 初心者でも使いやすい: 複雑なコードを書く必要がなく、直感的な操作でゲーム開発が進められます。
  • 時間の節約: 基本的なゲームシステムが揃っているため、開発時間を大幅に短縮できます。
  • 高品質なサポート: 開発者からのサポートがあり、安心して利用できます。