Unity でシンプルな 2D プラットフォーマーを作成する

このチュートリアルでは、Unity で基本的な 2D プラットフォーム ゲームを作成します。これには、移動、ジャンプ、プラットフォームとのやり取りができるプレイヤー キャラクターの作成が含まれます。また、障害物や収集品などの基本的なゲーム要素も追加します。

1. プロジェクトの設定

まず、新しい Unity 2D プロジェクトを設定しましょう。

  1. Unity を開き、新しい 2D プロジェクトを作成します。
  2. [ファイル] > [新規シーン] に移動し、2D モードを選択します。
  3. シーンをMainSceneとして保存します。

2. プレイヤーキャラクターの作成

まず、スプライトを使用してシンプルなプレイヤー キャラクターを作成し、移動機能を追加します。

  1. Hierarchy ウィンドウを右クリックし、Create Empty を選択します。このオブジェクトに Player という名前を付けます。
  2. インスペクターで コンポーネントの追加 をクリックして、Sprite Renderer コンポーネントを Player オブジェクトに追加します。
  3. 独自のスプライトを作成するか、Unity Asset Store から 2D アセットをインポートして、キャラクターとして使用するスプライトを選択します。
  4. 物理と衝突検出のために、Player オブジェクトに Rigidbody2DBoxCollider2D を追加します。

3. プレイヤーの移動スクリプトの作成

次に、プレイヤーが移動したりジャンプしたりできるようにするスクリプトを記述します。次の手順に従います。

  1. プロジェクト ウィンドウを右クリックし、作成 > C# スクリプト を選択します。PlayerController という名前を付けます。
  2. このスクリプトをプロジェクト ウィンドウから階層内のプレーヤーにドラッグして、プレーヤー オブジェクトにアタッチします。

スクリプトの内容を次の内容に置き換えます。

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float moveSpeed = 5f;
    public float jumpForce = 7f;
    private Rigidbody2D rb;
    private bool isGrounded = true;

    void Start()
    {
        rb = GetComponent();
    }

    void Update()
    {
        // Player movement
        float moveInput = Input.GetAxis("Horizontal");
        rb.velocity = new Vector2(moveInput * moveSpeed, rb.velocity.y);

        // Jumping
        if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
        {
            rb.velocity = new Vector2(rb.velocity.x, jumpForce);
            isGrounded = false;
        }
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        // Check if player is touching the ground
        if (collision.collider.CompareTag("Ground"))
        {
            isGrounded = true;
        }
    }
}

4. プラットフォームと環境の構築

次に、プレイヤーがジャンプするためのプラットフォームを作成します。

  1. 階層で右クリックし、Create Empty を選択して、Platform という名前を付けます。
  2. プラットフォームに BoxCollider2DSprite Renderer を追加します。
  3. プラットフォームのスプライト (平らな長方形など) を選択します。
  4. Ctrl+D (Mac の場合は Cmd+D) を押してプラットフォームを複製し、コピーを配置してレベルを作成します。
  5. プレイヤーのジャンプ ロジックのインスペクターで、これらのオブジェクトに Ground のタグを付けます。

5. 障害物の追加

ゲームをより難しくするために、いくつかの障害物を追加しましょう。

  • 別の空の GameObject を作成し、Obstacle という名前を付けます。
  • このオブジェクトに BoxCollider2DSprite Renderer を追加します。
  • 障害物(スパイクや危険物など)のスプライトを選択します。
  • プレイヤーの OnCollisionEnter2D メソッドでは、障害物との衝突を検出し、ゲームを再開したり、体力を減じたりすることができます。

6. 収集品の追加

コインやパワーアップなどの収集品を追加することもできます。

  • 別の空の GameObject を作成し、Collectible という名前を付けます。
  • 収集品を表すために、CircleCollider2D (トリガーとして設定) と Sprite Renderer を追加します。
  • プレイヤーがアイテムを収集したことを検出する簡単なスクリプトを作成します。
using UnityEngine;

public class Collectible : MonoBehaviour
{
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.CompareTag("Player"))
        {
            // Add points or other effects here
            Destroy(gameObject); // Remove the collectible from the scene
        }
    }
}

7. ゲームのテストと調整

基本的な仕組みが整ったので、[再生] ボタンを押してゲームをテストできます。次の点を調整してみてください。

  • moveSpeedjumpForce の値を変更して、プレイヤーの移動速度とジャンプ速度を微調整します。
  • プラットフォームと障害物を複製して、異なるレベルを作成します。
  • 背景要素や装飾を追加して、ゲームを視覚的に魅力的にします。

8. プラットフォームの強化

プラットフォーム ゲームを次のレベルに引き上げるには、次の要素を追加することを検討してください。

  • 歩行やジャンプなどのプレイヤーのアニメーション。
  • ジャンプ、アイテムの収集、障害物への衝突などのサウンドエフェクト。
  • プレイヤーの動きを追跡し、よりダイナミックなゲームビューを実現するカメラ。

結論

このシンプルな 2D プラットフォーマーの設定により、より多くの機能、レベル、洗練度で拡張できる基本的なゲーム構造が完成しました。さまざまなメカニズムを試して、独自のプラットフォーマーを作成しましょう。