はじめに
こんにちは、Unity初心者の皆さん!今日は、クリック操作でオブジェクトを削除し、すべてのオブジェクトが消えたら「CLEAR」というテキストを表示させる方法を一緒に学びましょう。
オブジェクトの配置
まず、シーンにいくつかのオブジェクトを配置しましょう。例えば、3DのCubeをいくつか作成します。
- ヒエラルキー(Hierarchy)ウィンドウで右クリック。
- 「3D Object」→「Cube」を選びます。
この操作を繰り返して、いくつかのCubeをシーンに追加します。必要に応じてサイズや位置を調整してください。
「CLEAR」テキストを作成する
次に、「CLEAR」というテキストをシーンに追加し、最初は非表示にしておきます。
- ヒエラルキー(Hierarchy)ウィンドウで右クリック。
- 「UI」→「Text」を選びます。
- 追加されたTextオブジェクトを選択し、インスペクター(Inspector)で以下の設定をします:
- テキストを「CLEAR」に変更
- テキストの色を変更する
- フォントサイズを大きくする(例えば40)
- アンカーを中央に設定
- Textコンポーネントの「GameObject」を非アクティブにする(チェックを外す)
![](https://cbagames.jp/wp-content/uploads/2024/02/2024-02-13_173033.png)
オブジェクトを削除するスクリプト
次に、オブジェクトをクリックで削除するためのスクリプトを作成します。
- プロジェクト(Project)ウィンドウで右クリック。
- 「Create」→「C# Script」を選び、「RemoveOnClick」と名付けます。
- スクリプトをダブルクリックして開き、以下のコードを追加します:
コード全体の説明
RemoveOnClick
というクラスがあり、ゲームオブジェクトにアタッチすることで機能します。- クリックすると、そのクリックした位置にあるオブジェクトを削除します。
- 削除したオブジェクトの数を数え、5つ削除すると「CLEAR」と表示します。
各部分の説明
UnityEngine
とUnityEngine.UI
を使うことで、ゲームのオブジェクトやUIのテキストを操作できます。
RemoveOnClick
というクラスは、MonoBehaviour
を継承しているため、Unityのスクリプトとして動作します。count
は削除したオブジェクトの数を記録するための変数です。clearText
は画面に「CLEAR」と表示するためのUIテキストです。
Start
メソッドはゲーム開始時に一度だけ呼ばれ、count
を0に初期化します。
Update
メソッドは毎フレーム呼ばれます。ここでクリックを検出し、オブジェクトの削除やメッセージの表示を行います。Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
- マウスの位置からレイ(見えない光線)を飛ばします。
if (Input.GetMouseButtonDown(0))
- 左クリックが押されたかどうかをチェックします。
if (Physics.Raycast(ray, out hit))
- レイがオブジェクトに当たったかどうかを確認します。
Destroy(hit.collider.gameObject);
- 当たったオブジェクトを削除します。
count++;
- 削除したオブジェクトの数を増やします。
if (count == 5)
- 5つオブジェクトを削除したら、
clearText.text = "CLEAR";
で「CLEAR」と表示します。
- 5つオブジェクトを削除したら、
全体の動き
- ゲームが始まると、
count
は0にリセットされます。 - プレイヤーが左クリックすると、クリックした位置にあるオブジェクトが削除されます。
- 削除されたオブジェクトの数が5になると、「CLEAR」と表示されます。
using UnityEngine;
using UnityEngine.UI;
public class RemoveOnClick : MonoBehaviour
{
private int count;
public Text clearText;
void Start()
{
count = 0;
}
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++;
}
}
if (count == 5)
{
clearText.text = "CLEAR";
}
}
}
スクリプトをオブジェクトにアタッチする
最後に、作成したスクリプトを空のオブジェクトなどにアタッチします。
- ヒエラルキー(Hierarchy)ウィンドウで空のオブジェクトなどを選択し、ObjectDeleterスクリプトをドラッグ&ドロップでアタッチします。
- スクリプトのインスペクターで、Clear Textフィールドに「CLEAR」テキストオブジェクトをドラッグ&ドロップします。
以上で設定完了です!シーンを再生し、Cubeをクリックして削除していくと、すべてのCubeが消えたときに「CLEAR」というテキストが表示されます。試してみてくださいね!
おすすめのアセット
Super Text Meshは、Unityで簡単に美しいテキストを表示できるツールです。このアセットは、リアルタイムでの文字エフェクト、カスタムフォントサポート、アニメーション化されたテキスト表示が特徴です。ユーザーはドロップシャドウやアウトラインなどの効果を簡単に追加でき、対話的なテキストやHUDの作成にも最適です。