2DRPGの作り方8 RPGにおけるマップ切り替えイベントをUnityで実装する方法 | Unity入門の森 ゲームの作り方

2DRPGの作り方8 RPGにおけるマップ切り替えイベントをUnityで実装する方法

Unity C# 2DRPGゲームの作り方 ~ドラクエ風レトロRPGを作ろう!~


Unity入門の森オリジナル本格ゲーム制作講座はこちら
11種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

前回までの記事でプレイヤーキャラをマップ上で移動させ、アニメーションを付けることができました。

前回の記事:

2DRPGの作り方7 移動した向きによってUnityアニメーションを切り替えよう
前回まででアニメーションに関するアセットの作成および設定方法について解説してきました。 前回の記事: 今回の記事ではスクリプトからUnityのアニメーション機能を制御していきます。 アニメーションの解説は今回で一区切りつくので頑張って進めて...

今回の記事ではフィールドマップとダンジョンマップの切り替えを実装していきます。


【Line登録者限定のプレゼントもあるよ!】

フィールドとダンジョンを移動するイベント用マスの作成

まずはイベント用のマスを作成していきましょう!

イベント用のマスはマップの「EventBox」レイヤーに配置していきます。

次の手順を行い「EventBox」レイヤーに配置する「Tilemap」のマップチップを新しく作成します。

  • メニューのAssets > Create > Tileをクリックし、新しい「Tile」アセットを作成する
  • 作成する「Tile」アセットの名前は「MoveDungeonMapChip」にする。
  • 保存するフォルダーの位置はお好みでOKです。記事では「FieldPalette」と同じフォルダーにしています。

(↑この手順はUnity2019までは使えますがそれ以降のバージョンでは使えません。Sprite画像をそのままタイルマップにドラッグ&ドロップして新しいTileとして追加すればOKです。)

作成した直後の「MoveDungeonMapChip」にはスプライトが設定されていませんので、そのままでは画面に表示されません。

「EventBox」レイヤーに配置するマップチップは画面に表示しないようにするので、見た目は編集中に判別できるものがいいでしょう。

この記事ではマップで使用している画像から適当なものを設定し、色を変更したものにしています。

フィールド用のマップに配置する

「MoveDungeonMapChip」アセットを作成したら次はそれを「FieldPalette」に追加しましょう。Window > 2D > TilePaletteを開きます。

追加は単にドラック&ドロップでOKです。

追加したら、次は実際にマップ上に配置していきます。FieldMapPrefabの「EventBox」レイヤーを開きましょう。

配置する際はスクリプトで制御するので必ず「EventBox」レイヤーに配置してください。

配置位置はマップによるので、プレイヤーがそのマスに移動したらダンジョンに移動させたい位置に配置してください。

記事では次の画像のように配置しています。

EventBoxの「TilemapRenderer」コンポーネントが非表示になってる場合は一度表示させてちゃんと配置できるか確認してください。

EventBoxレイヤー

スクリプトの実装

マップ関係のアセットの準備ができましたので次はスクリプトの方を修正していきます。

続きを読む

このコンテンツはパスワードで保護されています。 コンテンツを読みたい方はUnity入門の森ショップ(https://unityforest.shop/)で講座閲覧権を取得してね。

まとめ

少々長くなりましたが、今回の記事ではマップの移動処理を作成しました。

マップの「EventBox」レイヤーにマップを移動するマスを配置し、マップ移動のイベントを実行しています。

今後マップにおいて色々なイベントを実装する際も同じような流れで行います。

「MassEvent」クラスの派生クラスを定義したり、「EventBox」レイヤーにイベント用のマスを配置していきます。オブジェクト指向を意識した実装にすることで何度も同じスクリプトを再利用していきます。

その分、マスイベントを作成する際に形式的に行うことが多いですが、このあとも頑張って作業していきましょう!

まとめると以下のようになります。

  • マップに配置するイベント用のマップチップを作成&パレットに配置する。
  • マップの「EventBox」レイヤーにマップ切り替え用のマスを設定する
  • 「Map」コンポーネントにマップ移動用のイベントデータを設定
  • プレイヤーがマップ切り替え用のマスに到達したら、そのマスに設定されたマップを切り替える
  • 以後、「EventBox」レイヤーには専用の「Tile」アセットを設定していく。
  • 「Map」コンポーネントには「EventBox」レイヤーに設置したマスを識別できるようなデータを持たせる。

追記:

今回の講座ではマップシステムをタイルマップやレイヤーで表現し、ScriptableObjectと対応する継承先のスクリプトでイベントの中身を実装する形で進めています。

他の方法としてはプレイヤーにコライダーなどで当たり判定を付け、イベントとなるゲームオブジェクトを別途用意。そこにもコライダーを付けていく方針などが考えられます。

次の章から出てくるNPC系はColliderこそ使用していませんが、マップに配置する形になっています。使い分けとしては固定のものはタイルマップに配置する形となっています。

このあたりの実装の方法についてはいくつか選択肢があります。ご自身で作品作りを行う際はお好きな形を選んでもらえたらと思います。

それでは次の記事に行ってみましょう!

次の記事:

2DRPGの作り方9 UnityでRPGのNPCを作ろう ~移動処理編~
前回はフィールドマップとダンジョンマップをマップ間移動処理を実現するマスイベントを作成しました。 前回の記事: 今回の記事ではフィールドマップに村人を配置していきます。 UnityでNPC(ノンプレイヤーキャラクター)を作る方法をマスターし...

Unity C# 2DレトロRPGゲームの作り方講座へ>>



Unity入門の森オリジナル本格ゲーム制作講座はこちら
11種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

コメント

  1. 匿名 より:

    Assets > Create > EventChipが見当たりません。
    どこにあるのでしょうか

    • Unity入門の森 より:

      質問ありがとうございます。
      Assets > Create > MassEvent > Move Map
      の順で作成してみてください。これで作りたいScriptable Objectが生成されます。

  2. KAN より:

    Assets > Create > MassEvent > Move Map
    のMassEventが見当たらないです

    • Unity入門の森 より:

      報告ありがとうございます。
      こちら、改めてチェックしてみましたがやはりファイル作成問題なくできました。
      該当箇所に追記を行ったので記事の方再度確認していただければ幸いです。

  3. たまそ より:

    こんにちは。
    Unity 2021.3.2f1の環境ですと、
    Assets > Create > MassEvent
    についても見当たらないです。

    • Unity入門の森 より:

      こちらに関して記事内で追記の節を新たに追加しました。
      結論から言うとUnity2021.3.5f1で普通に目的のファイルを生成可能でした(3.2f1では試してませんが)。
      そちらの環境で上手くいかなった原因はわからないですが手元の環境の8章途中段階まで進めたファイルのダウンロードリンクも追加しておいたので参考にしてみてください。

  4. gant より:

    こんにちは!
    MoveDungeonMapEventを作成し、Tile、StartPosTileにそれぞれアセットを設定することはできたのですが、MoveMapPrefabにプレハブを設定することが出来ません。
    どうすればプレハブを設定できるのでしょうか?

    • Unity入門の森 より:

      MoveMapPrefabの設定方法がわからないとのことですね。
      記事内にMoveDungeonMapEventを作成した後に実際にどうアタッチするかを示した動画を追加しました。
      具体的にはProjectエディタのPrefabsフォルダの中にある「DungeonMap」プレハブをドラッグ&ドロップすることでアタッチできます。
      Mapクラスをアタッチしたプレハブをインスペクター画面にあるMoveMapPrefabにドラッグ&ドロップです。

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