【Unity】2Dアクションゲームで動く床の作り方!

【PR スプリングセール開催中】

Unityアセットストアで、5月9日0時まで多数の人気アセットが50%オフで販売されています!この機会に手に入れましょう!
50%オフのアセットはこちら

2Dアクションゲームによく出てくる、動く床の作り方について紹介します。

今回紹介する方法を使うと、好きな方向に床を移動させることができるようになりますので、ぜひ試してみましょう。

プレイヤーと床の基本設定

プレイヤーやステージの用意

まずは、操作するプレイヤーとステージを用意します。

今回はこちらのアセットのサンプルシーンを使います。

デモシーンでは、ステージとプレイヤーや敵が配置されています。

キャラクターは左右の方向キーで動かせるようになっており、スペースキーでジャンプもできるので、便利なアセットとなっています。

床を動かす方法

サンプルシーンでは、宙に浮いた床は止まったままなので、動かしてみます。

床が動く目的地の設定

床を動かすために、目的地を設定します。ヒエラルキーから、空のオブジェクトを作成して、適当な名前をつけます。

空のオブジェクトは、そのままではどこにあるのか見えないので、インスペクターの左上からアイコン表示をしておきましょう。シーンビューでは見えますが、実際のゲーム画面では見えません。

プレイヤーの右にある床を左右に動かしたいので、先ほど作成したオブジェクトを左右に配置します。

床を目的地へ向かわせるスクリプトの作成

スクリプトを作成します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MovingPlatform : MonoBehaviour
{
    [SerializeField] private GameObject[] waypoints;
    private int currentWaypointIndex = 0;

    [SerializeField] private float speed = 2f;

    private void Update()
    {
        // 現在の床の位置が目的地に非常に近い場合
        if(Vector2.Distance(waypoints[currentWaypointIndex].transform.position, transform.position) < .1f)
        {
            // 目的地を次のポイントにセットする
            currentWaypointIndex++;

            // 最後まで行ったら、一番最初のポイントを目的地とする
            if(currentWaypointIndex >= waypoints.Length)
            {
                currentWaypointIndex = 0;
            }
        }

        // 現在の床の位置から、目的地の位置まで移動する
        transform.position = Vector2.MoveTowards(transform.position, waypoints[currentWaypointIndex].transform.position, Time.deltaTime * speed);

    }
}

作成できたら、スクリプトは動かす床に設定して、Waypointsのところに目的地のオブジェクトを設定します。

実行してみると、床が動きました! ただし、プレイヤーが乗っても、プレイヤーも一緒に追従してくれません。

このスクリプトの良いところは、目的地が複数設定できることです。お好みの方向に動かしましょう。

参考動画

動く床も含め、2Dアクションゲームが簡単に作れるアセットはこちらです。

Corgi Engine – 2D + 2.5D Platformer

タイトルとURLをコピーしました