Chapter 60無料公開

ゴールを配置する

baba_s
baba_s
2021.08.08に更新

前項までで「トランポリン」「動く床」「落ちる床」「歩く敵」「飛ぶ敵」といったギミック・キャラクターを作成してきました。

本項からは最後のギミックであるゴールを作成していきます

スプライトの設定

Project ウィンドウで「Assets/Pixel Adventure 1/Free/Items/Checkpoint/End」フォルダの「End (Idle)」を選択した状態で

Inspector ウィンドウで次の項目を設定して「Apply」を押します。

  • Pixels Per Unit:16
  • Filter Mode:Point (no filter)
  • Compression:None

Project ウィンドウから「End (Idle)」スプライトを Hierarchy ウィンドウにドラッグします。

Hierarchy ウィンドウに「End (Idle)」オブジェクトが表示されていれば配置完了です。

Scene ウィンドウや Game ウィンドウにはこのようにオブジェクトが表示されます。

スプライトの配置

Unity 左上のツールバーから「移動」ツールを選択して

Hierarchy ウィンドウで「End (Idle)」オブジェクトを選択した状態で Scene ウィンドウで Ctrl キーを押しながらゴールを移動させて適当な位置にゴールを配置します。

スクリプトの作成

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

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

Goal.cs
using UnityEngine;

// ゴールを制御するスクリプト
public class Goal : MonoBehaviour
{
    // ゴールしたかどうか
    private bool m_isGoal;

    // 他のオブジェクトと当たった時に呼び出される関数
    private void OnTriggerEnter2D( Collider2D other )
    {
        // まだゴールしておらず
        if ( !m_isGoal )
        {
            // 名前に「Player」が含まれるオブジェクトと当たったら
            if ( other.name.Contains( "Player" ) )
            {
                // シーンに存在する CameraShaker スクリプトを検索する
                var cameraShake = FindObjectOfType<CameraShaker>();

                // CameraShaker を使用してカメラを揺らす
                cameraShake.Shake();

                // 何回もゴールしないように、ゴールしたことを記憶しておく
                m_isGoal = true;
            }
        }
    }
}

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

Unity エディタに戻り Project ウィンドウから「Goal」スクリプトを Hierarchy ウィンドウの「End (Idle)」オブジェクトにドラッグします。

Hierarchy ウィンドウで「End (Idle)」オブジェクトを選択した状態で

Inspector ウィンドウに「Goal」スクリプトが表示されていればアタッチ完了です。

当たり判定の設定

Hierarchy ウィンドウで「End (Idle)」オブジェクトを選択した状態で Inspector ウィンドウで「Add Component」を押して、検索欄に「BoxCollider2D」と入力して、表示された「Box Collider 2D」を選択します。

「Box Collider 2D」をアタッチできたら、次の項目を設定します。

  • Is Trigger:オン
  • Offset:「Y」に「-0.5」と入力
  • Size:「X」に「3」、「Y」に「3」と入力

これで Unity を再生してプレイヤーを操作すると、プレイヤーがゴールに当たった時にカメラが揺れることが確認できます。確認できたら Unity の再生を停止します。

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