はじめに
UnityでPrefab(プレハブ)を使って開発を行う際、ゲーム内のオブジェクトを動的に生成し、そのサイズを条件に応じて変更することがよくあります。今回は、特にSphere(球体)のプレハブをクリックするたびに生成しオブジェクトの大きさを3段階で変える機能を実装してみましょう。この機能は、ゲーム内でオブジェクトのインタラクションを豊かにするのに役立ちます。初心者の方にもわかりやすいように、一歩ずつ進めていきましょう。
Unityとは?
Unityは、ゲーム開発を行うための統合開発環境です。2Dや3Dのゲームをはじめ、VR(バーチャルリアリティ)やAR(拡張現実)のコンテンツも作成できます。Unityの特徴は、直感的な操作で高度なゲームを作成できる点にあります。プログラミングの知識が少ない初心者でも、基本的なゲームを作ることが可能です。
Prefab(プレハブ)とは?
Prefabは、Unityで使用される、予め設定されたオブジェクトのテンプレートです。オブジェクトに必要なコンポーネントや設定をあらかじめ組み込んでおき、ゲーム中に動的に生成することができます。これにより、同じ設定のオブジェクトを繰り返し作成する手間を省き、効率的な開発を実現します。
ステップ1: Sphereプレハブの作成
まずは、Unityエディタで新しいプロジェクトを開始し、Sphereオブジェクトを作成してプレハブ化しましょう。ヒエラルキーウィンドウで右クリックし、「3D Object」→「Sphere」を選択します。これでシーンに球体が追加されます。次に、このSphereをプロジェクトウィンドウにドラッグ&ドロップしてプレハブ化します。
![](https://cbagames.jp/wp-content/uploads/2024/01/2024-01-28_163548.png)
ステップ2: スクリプトの作成
Sphereプレハブのサイズを変更するためのスクリプトを作成しましょう。プロジェクトウィンドウで右クリックし、「Create」→「C# Script」を選択し、スクリプトに「ChangeSize」という名前をつけます。このスクリプトを開き、以下のように記述します。
using UnityEngine;
public class ChangeSize : MonoBehaviour
{
public GameObject prefab;
private GameObject ballObj;
private Vector3 mousePosition;
private int count;
void Start()
{
count = 0;
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
mousePosition = Input.mousePosition;
mousePosition.z = 10.0f;
GameObject obj = Instantiate(prefab, Camera.main.ScreenToWorldPoint(mousePosition), Quaternion.identity);
count++;
if (count == 1)
{
obj.transform.localScale = new Vector3(0.3f, 0.3f, 0.3f);
}
if (count == 2)
{
obj.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f);
}
if (count == 3)
{
obj.transform.localScale = new Vector3(2.0f, 2.0f, 2.0f);
count = 0;
}
}
}
}
このC#スクリプトは、Unityでマウスクリックに応じて異なるサイズのSphereプレハブを生成する機能を実装しています。具体的には、マウスをクリックするたびに、プレハブから球体を生成し、そのサイズを段階的に変更します。サイズは3段階で変化し、3回目のクリック後にはカウントがリセットされ、再び最初のサイズから開始します。以下にスクリプトの概要といくつかの改善点を説明します。
スクリプトの概要
public GameObject prefab;
:インスペクターから割り当てるSphereプレハブを指定します。private GameObject ballObj;
:生成された球体オブジェクトを参照するための変数ですが、このスクリプトでは使用されていません。private Vector3 mousePosition;
:マウスクリックの位置を保持します。private int count;
:クリックされた回数を追跡し、サイズ変更のサイクルを管理します。
スクリプトの動作
- ユーザーがマウスをクリックすると、
Update
メソッド内でInput.GetMouseButtonDown(0)
が真と評価されます。 - マウスのスクリーン位置をワールド位置に変換し、その位置にプレハブから新しい球体オブジェクトを生成します。
count
変数に基づいて球体のサイズを変更します。1回目のクリックではサイズが0.3、2回目では1.0、3回目では2.0に設定されます。- 3回クリック後、
count
はリセットされ、次のサイクルが開始します。
ステップ3: スクリプトの適用
作成したスクリプトをSphereプレハブに適用します。プロジェクトウィンドウからSphereプレハブを選択し、インスペクターウィンドウにスクリプトファイルをドラッグ&ドロップします。これで、プレハブをシーンに配置し、実行すると、クリックするたびにサイズが変化するようになります。
![](https://cbagames.jp/wp-content/uploads/2024/02/2024-02-13_165353.png)
まとめ
UnityでPrefabのサイズを動的に変更する方法を学びました。Prefabを利用することで、ゲーム内のオブジェクトを効率的に管理し、プレイヤーとのインタラクションを豊かにすることができます。今回は基本的な例を紹介しましたが、この技術はさまざまなシチュエーションで応用可能です。ゲーム開発において、クリエイティビティを発揮してみてください。