はじめに
この記事では、Unityでキューブを操作して3つのボールを集め、タイマーを止めるまでの一連のステップを、初心者にも分かりやすく解説します。ゲーム開発の基本を学びたい方や、Unityでのプログラミングに興味がある方に最適な内容です。
Unityプロジェクトの準備
まず、Unity Hubを開き、「新規プロジェクト」をクリックして、3Dプロジェクトを作成しましょう。プロジェクト名を入力し、好きな場所にプロジェクトフォルダを作成します。Unityエディタが開いたら、プロジェクトの準備は完了です。
![](https://cbagames.jp/wp-content/uploads/2024/01/2024-01-27_184016.png)
オブジェクトの配置
UnityエディタのHierarchyパネルで右クリックし、「3D Object」>「Cube」とを選択して、キューブをシーンに追加します。次に、同じ方法で3つの球体(Sphere)を追加します。これらが、集めるべきボールになります。
![](https://cbagames.jp/wp-content/uploads/2024/02/2024-02-05_180943.png)
オブジェクトのコンポーネント
キューブを操作するには、まずキューブに物理的な挙動を持たせる必要があります。キューブを選択し、Inspectorパネルで「Add Component」>「Physics」>「Rigidbody」を選択して、キューブにRigidbodyコンポーネントを追加します。これにより、キューブは重力の影響を受けるようになります。freezeRotationにチェックを入れて、転がっていかないように、回転を固定しておきます。
![](https://cbagames.jp/wp-content/uploads/2024/02/2024-02-05_181123.png)
Sphereのコライダーのistriggerにチェックを入れておきます。
![](https://cbagames.jp/wp-content/uploads/2024/02/2024-02-05_181204.png)
タイマーの配置
ボールをすべて集めたらタイマーを停止するには、タイマーを実装する必要があります。これを行うために、UI > テキストを作成します。テキストの色、サイズ、配置を見やすい位置に変えます。
![](https://cbagames.jp/wp-content/uploads/2024/02/2024-02-05_181506.png)
プレイヤーの入力を受け付ける
キューブを動かすには、プレイヤーからの入力をプログラムで処理する必要があります。これを実現するために、新しいC#スクリプトを作成します。Hierarchyパネルでキューブを選択し、「Add Component」>「New Script」をクリックして、「MoveCube」という名前のスクリプトを作成し、開きます。
このスクリプトはUnityでプレイヤーキャラクターを動かし、特定のアイテムを集める際に使用するものです。主に以下の機能を持っています:
- プレイヤーの動き:
Update
メソッド内で、プレイヤー(この場合はRigidbodyコンポーネントを持つオブジェクト)に対して水平方向(Horizontal)と垂直方向(Vertical)の入力に基づいて力を加えています。これにより、キーボードの矢印キーまたはWASDキーを使用してプレイヤーを動かすことができます。 - アイテムの収集:
OnTriggerEnter
メソッドは、プレイヤーオブジェクトがトリガーコライダーを持つ他のオブジェクト(この場合は”Item”タグが付いたオブジェクト)に触れたときに呼び出されます。アイテムに触れると、そのアイテムは非表示(SetActive(false)
)になり、count
変数が増加します。 - タイムカウンター:
Update
メソッド内では、プレイヤーが3つのアイテムを全て集めるまでの時間を計測しています。アイテムを3つ集めるまでは、経過時間を増やし続け、その時間を画面に表示します。時間は小数点以下2桁で表示されます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class MoveCube : MonoBehaviour
{
public float speed = 10.0f;
private Rigidbody rb;
private int count;
public float time;
public Text TimeText;
void Start()
{
rb = GetComponent<Rigidbody>();
count = 0;
time = 0.0f;
}
void Update()
{
var moveX = Input.GetAxis("Horizontal") * speed;
var moveZ = Input.GetAxis("Vertical") * speed;
rb.AddForce(moveX, 0.5f, moveZ);
//3個のアイテムを取れていない間は実行
if (count < 3)
{
time += Time.deltaTime;
TimeText.text = time.ToString("F2");
}
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Item"))
{
other.gameObject.SetActive(false);
count++;
}
}
}
作成したスクリプトをCubeにアタッチしてinspector画面からテキストなどを設定します。
![](https://cbagames.jp/wp-content/uploads/2024/02/2024-02-05_183137.png)
実行してタイムアタックができるか確認してみましょう。
終わりに
このガイドでは、Unityでの基本的なゲーム作成方法を紹介しました。キューブを操作してボールを集め、タイマーを止めることは、Unityの基本を理解するための素晴らしいスタートポイントです。楽しみながら、Unityでのスキルを磨いていきましょう。