Chapter 45無料公開

落ちる床の挙動を作成する

baba_s
baba_s
2021.08.08に更新

前項では落ちる床のアニメーションを作成しました。本項では落ちる床の挙動を作成していきます。

スクリプトの作成

まずは落ちる床を制御するスクリプトを作成していきます。

Project ウィンドウで「Assets/@Project/Scripts」フォルダを右クリックして「Create > C# Script」を選び、

作成したスクリプトに「FallPlatform」と名前をつけてコードエディタで開きます。

FallPlatform.cs
using UnityEngine;

// 落ちる床を制御するスクリプト
public class FallPlatform : MonoBehaviour
{
    // 落ちる速さ
    public float m_speed = 0.3f;

    // プレイヤーが上に乗ったかどうか
    private bool m_isHit;

    // シーンが開始する時に呼び出される関数
    private void Awake()
    {
        // 自分自身の MovingPlatformMotor2D を取得して
        var motor = GetComponent<MovingPlatformMotor2D>();

        // プレイヤーが当たった時に呼び出されるイベントに関数を登録する
        motor.onPlatformerMotorContact += OnContact;
    }

    // プレイヤーが当たった時に呼び出される関数
    private void OnContact( PlatformerMotor2D player )
    {
        // プレイヤーが落下中の場合
        if ( player.IsFalling() )
        {
            // プレイヤーが上に乗ったことにする
            m_isHit = true;
        }
    }

    // 毎フレーム呼び出される関数
    private void Update()
    {
        // プレイヤーが上に乗った場合
        if ( m_isHit )
        {
            // 自分自身の MovingPlatformMotor2D を取得して
            var motor = GetComponent<MovingPlatformMotor2D>();

            // 落下させる
            motor.velocity = Physics2D.gravity * m_speed;
        }
    }
}

「FallPlatform」スクリプトをコードエディタで開いたら上記のコードを入力して保存します。

Unity エディタに戻り Project ウィンドウの「FallPlatform」スクリプトを Hierarchy ウィンドウの「On (32x10)_0」オブジェクトにドラッグします。

Hierarchy ウィンドウで「On (32x10)_0」オブジェクトを選択した状態で

Inspector ウィンドウに「FallPlatform」スクリプトが表示されていれば、正常にアタッチできています。

落下機能の設定

落ちる床を落下させるためのスクリプトを作成しましたが、PC2D で落ちる床を実装する場合は、スクリプトを作成するだけでなく、オブジェクトに「Moving Platform Motor 2D」という名前のコンポーネントをアタッチしておく必要があります。

Hierarchy ウィンドウで「On (32x10)_0」オブジェクトを選択した状態で Inspector ウィンドウの「Add Component」を押して

検索欄に「MovingPlatformMotor2D」と入力して、表示された「Moving Platform Motor 2D」を選択します。

これで Inspector ウィンドウに「Moving Platform Motor 2D」コンポーネントが表示されていれば移動機能の設定が完了です。

当たり判定の設定

次は落ちる床の当たり判定を設定していきます。

Hierarchy ウィンドウで「On (32x10)_0」オブジェクトを選択した状態で Inspector ウィンドウの「Add Component」を押して

検索欄に「BoxCollider2D」と入力して、表示された「Box Collider 2D」を選択します。

これで Inspector ウィンドウに「Box Collider 2D」が表示されていれば当たり判定の設定が完了です。

レイヤーの設定

Hierarchy ウィンドウで「On (32x10)_0」オブジェクトを選択した状態で

Inspector ウィンドウで「Layer」を「9: Moving Platforms」に変更します。

これで Unity を再生してプレイヤーを操作すると、プレイヤーが落ちる床に乗れるようになったことが確認できます。確認できたら Unity の再生を停止します。

以上で落ちる床の作成が完了しました。

Unity メニューの「File > Save」を押すか、Ctrl + S を押して、ここまでの作業内容を保存しておきます。

おまけ

Inspector ウィンドウで「FallPlatform」スクリプトのパラメータを変更することで、落ちる速さを変更できます。もし興味があればパラメータを変更してみてください。