【Unity】得点システム、時間制限、およびゴール判定を持つゲームの作成

本資料では、Unityを使用して次の3つの要素を実装する方法を説明します:

  • プレイヤーがコインを取得すると得点が加算されるシステム。
  • 一定時間が経過するとゲームが終了する時間制限。
  • ゴール地点に旗(Flag)を配置し、接触するとゲームがクリアされる判定。

仕様

得点システム

  • プレイヤーがコインに触れると10点が加算される。
  • プレイヤーが取得した得点は画面に表示される。

時間制限

  • ゲームには60秒の制限時間があり、経過するとゲームオーバーとなる。

ゴール判定

  • ゴール地点にFlagオブジェクトを配置し、プレイヤーがそれに接触するとゲームクリアとなり、ClearSceneへ移行。

実装手順

1. スコアシステムの実装

1.1 スコアを管理する変数を追加

int score = 0; // 得点の初期値

1.2 OnTriggerEnter2Dメソッドでアイテム取得時に得点を加算

void OnTriggerEnter2D(Collider2D other)
{
    if (other.CompareTag("Coin"))
    {
        score += 10; // コイン取得で10点加算
        Destroy(other.gameObject); // コインを削除
        Debug.Log("スコア: " + score);
    }
}
  • コインにTagを"Coin"として設定。

1.3 スコアをUIに表示

using UnityEngine.UI;

public Text scoreText;

void Start()
{
    scoreText.text = "Score: 0";
}

void Update()
{
    scoreText.text = "Score: " + score;
}
  • Canvas内にTextコンポーネントを配置し、スコアを表示します。

2. 時間制限によるゲーム終了

2.1 制限時間を管理する変数を追加

float gameTime = 60.0f; // 60秒の制限時間

2.2 Updateメソッドで時間を減らす

void Update()
{
    gameTime -= Time.deltaTime;

    if (gameTime <= 0)
    {
        Debug.Log("時間切れ!");
        SceneManager.LoadScene("GameOverScene"); // ゲームオーバーシーンに移行
    }

    // スコアやその他の既存処理
}

3. ゴール判定の実装

3.1 ゴールの旗(Flag)との接触判定

プレイヤーがゴールの旗に接触すると、ClearSceneに移行します。旗のオブジェクトにTagを"Flag"として設定してください。

void OnTriggerEnter2D(Collider2D other)
{
    if (other.CompareTag("Coin"))
    {
        score += 10;
        Destroy(other.gameObject);
        Debug.Log("スコア: " + score);
    }
    else if (other.CompareTag("Flag"))
    {
        Debug.Log("ゴールに到達しました!");
        SceneManager.LoadScene("ClearScene"); // ゴール到達でクリアシーンに移行
    }
}
  • 旗にTagとして"Flag"を設定し、ゴール判定を行います。

4. コインと旗のオブジェクト設定

  • CoinのPrefabを作成し、コライダーのIsTriggerを有効にしてTagを"Coin"に設定。
  • FlagのPrefab(旗)を作成し、Tagを"Flag"に設定。

まとめ

この技術資料では、Unityで得点システム、時間制限、そしてゴール判定を同時に機能させるための実装方法を説明しました。プレイヤーはコインを集めながらゴールを目指し、制限時間内にクリアできるかを競うゲームを構築できます。


この資料により、旗(Flag)とコインの判定を実装し、得点システムと時間制限を含むゲームが完成します。

Unity

Posted by hidepon