スポンサーリンク
スポンサーリンク
UnityUnityメモ

Unityでタイムアタックを実装してみる

Unity

はじめに

この記事では、Unityでキューブを操作して3つのボールを集め、タイマーを止めるまでの一連のステップを、初心者にも分かりやすく解説します。ゲーム開発の基本を学びたい方や、Unityでのプログラミングに興味がある方に最適な内容です。

Unityプロジェクトの準備

まず、Unity Hubを開き、「新規プロジェクト」をクリックして、3Dプロジェクトを作成しましょう。プロジェクト名を入力し、好きな場所にプロジェクトフォルダを作成します。Unityエディタが開いたら、プロジェクトの準備は完了です。

オブジェクトの配置

UnityエディタのHierarchyパネルで右クリックし、「3D Object」>「Cube」とを選択して、キューブをシーンに追加します。次に、同じ方法で3つの球体(Sphere)を追加します。これらが、集めるべきボールになります。

オブジェクトのコンポーネント

キューブを操作するには、まずキューブに物理的な挙動を持たせる必要があります。キューブを選択し、Inspectorパネルで「Add Component」>「Physics」>「Rigidbody」を選択して、キューブにRigidbodyコンポーネントを追加します。これにより、キューブは重力の影響を受けるようになります。freezeRotationにチェックを入れて、転がっていかないように、回転を固定しておきます。

Sphereのコライダーのistriggerにチェックを入れておきます。

タイマーの配置

ボールをすべて集めたらタイマーを停止するには、タイマーを実装する必要があります。これを行うために、UI > テキストを作成します。テキストの色、サイズ、配置を見やすい位置に変えます。

プレイヤーの入力を受け付ける

キューブを動かすには、プレイヤーからの入力をプログラムで処理する必要があります。これを実現するために、新しい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画面からテキストなどを設定します。

実行してタイムアタックができるか確認してみましょう。

終わりに

このガイドでは、Unityでの基本的なゲーム作成方法を紹介しました。キューブを操作してボールを集め、タイマーを止めることは、Unityの基本を理解するための素晴らしいスタートポイントです。楽しみながら、Unityでのスキルを磨いていきましょう。

スポンサーリンク
C-BA memo
タイトルとURLをコピーしました