【Unity】RPGを作るチュートリアルその104 各マップの移動イベントを実装

【Unity】RPGを作るチュートリアルその104 各マップの移動イベントを実装

シンプルなRPGをUnityで作るチュートリアルシリーズの104回目です。

第103回ではレベルアップ時に魔法を覚える処理を実装しました。

今回はゲーム内で使用するイベントの実装を進めていきます。各マップを繋ぐマップ移動のイベントを実装していきましょう。

 

 

制作環境

MacBook Pro 2023 Apple M2 Max

Unity6 (6000.0.30f1) Silicon

 

作業内容と順序

シンプルなRPGを作る上でどんな作業が必要か、どんな順番で作っていくと良さそうか、別ページで検討しました。基本的にこの流れに沿って進めていきます。

 

チュートリアルの一覧

このシリーズ全体の一覧は以下のページにまとめています。

 

前回の内容

前回はレベルアップ時に魔法を覚える処理を実装しました。

 

各マップのイベントを実装

イベント機能について、コードの部分はある程度作成できたので、各マップで実際にイベントを組んでいきましょう。といっても村のイベントについてはイベントプロセスを実装する際にある程度作ってあるので、

  • 各マップをつなぐマップ移動のイベント
  • ボスゴブリンの会話と戦闘のイベント
  • エンディングのイベント

を実装すれば、当初想定していたイベントとしては実装が完了します。案外進んでましたね(安心)

今回は各マップをつなぐマップ移動のイベントの部分を作成してきます。

 

各マップをつなぐマップ移動のイベントの作成

作成したマップ同士で移動するイベントを作成していきましょう。村からフィールドに移動するイベントは作成済みなので、こちらを複製してマップ移動させたい位置に配置していきます。

 

フィールドから村への移動

フィールドのマップを編集するため、Projectウィンドウから「Assets/Prefabs/Map」にある「Map_0002_Field」をHierarchyウィンドウの「Grid」の下にドラッグ&ドロップしてインスタンス化しましょう。

Prefabのインスタンス化
Prefabのインスタンス化

 

「Map_0001_Village」の下にある「Events」の中から「Event_MoveMap」をコピーして、「Map_0002_Field」の下にある「Events」の子オブジェクトとしてペーストします。

移動イベントの複製
移動イベントの複製

 

ペーストした「Event_MoveMap」の位置は「X」を [2.5] に、「Y」を [5.5] に設定します。これはフィールド上の村のアイコンがある位置になっています。イベントの画像が重なって見えにくい可能性があるので、「SpriteRenderer」の「Color」にて、アルファの値を「168」程度に変更しておくと両方見えるようになるかと思います。

村のアイコンの位置に配置
村のアイコンの位置に配置

 

続いて「Processes」の下にある「MoveMap」にて、「Target Map Id」の値を [1] に、「Target Position」の「X」を [7] に、「Y」を [0] に変更します。村の入り口にあるマップ移動イベントのひとつ上のタイルに移動します。

移動先の設定
移動先の設定

 

フィールドからダンジョンへの移動

ダンジョンに移動するイベントも作成しましょう。先ほど作成した「Event_MoveMap」を複製し、名前で区別できるようにそれぞれ [Event_MoveMap_Village][Event_MoveMap_Dungeon] にしました。

移動イベントの複製
移動イベントの複製

 

「Event_MoveMap_Dungeon」の位置は「X」を [13.5] に、「Y」を [12.5] に設定します。フィールド上のダンジョンアイコンと重なるように配置しましょう。

ダンジョンのアイコンの位置に配置
ダンジョンのアイコンの位置に配置

 

続いて「MoveMap」の設定を行いますが、その前に移動先の位置を特定するために「Map_0003_Dungeon」のPrefabもインスタンス化しましょう。必要に応じて表示、非表示を切り替えてください。

Prefabのインスタンス化
Prefabのインスタンス化

 

先行してダンジョンにも「Event_MoveMap」を複製して配置してみたところ、入り口の位置は「X」が「-3.5」、「Y」が「8.5」だったので、このひとつ右を移動先として、「Target Map Id」の値を [3] に、「Target Position」の「X」を [-3] に、「Y」を [8] に変更します。ワールド座標から0.5を引くとタイルの座標になるので、入り口の「X」が「-3.5」、そのひとつ右のタイルの「X」が「-2.5」で、ここから0.5を引いて「-3」としています。

移動先の設定
移動先の設定

 

ダンジョンからフィールドへの移動

ダンジョンからフィールドに移動するためのイベントも作成します。フィールドへの移動なので、「Map_0001_Village」の方の「Event_MoveMap」をコピーして、「Map_0003_Dungeon」の「Events」の子オブジェクトとしてペーストします。

移動イベントの複製
移動イベントの複製

 

「Event_MoveMap」の位置は「X」を [-3.5] に、「Y」を [8.5] に設定します。

ダンジョンの移動イベントの位置
ダンジョンの移動イベントの位置

 

「Processes」の下にある「MoveMap」にて、「Target Map Id」の値を [2] に、「Target Position」の「X」を [13] に、「Y」を [11] に変更します。フィールドのダンジョンアイコンのひとつ下のタイルに移動するようにします。

移動先の設定
移動先の設定

 

ここまでの設定が終わったら、「Map_0002_Field」と「Map_0003_Dungeon」のそれぞれで、「Overrides」のプルダウンから [Apply All] をクリックしてPrefabに変更を適用します。

 

動作確認

マップ間の移動について動作を確認していきましょう。「Grid」の下のすべてのマップは非表示にしておきます。

マップ用ゲームオブジェクトの非表示
マップ用ゲームオブジェクトの非表示

 

ゲームを実行して、オープニングを終わらせた後、

  • 村からフィールド
  • フィールドから村
  • フィールドからダンジョン
  • ダンジョンからフィールド

のそれぞれのマップ移動を確認します。もし移動先のズレなどがあった場合は、対応するイベントの「MoveMap」を調整していきましょう。

洞窟まで移動してきました
洞窟まで移動してきました

 

今回のブランチ

 

まとめ

今回はゲーム内で使用するイベントの実装として、各マップを繋ぐマップ移動のイベントを実装しました。マップを切り替えて行ける場所が増えていくとゲームらしさが増してきますね。

次回はボスゴブリンの会話と戦闘のイベントを実装していきたいと思います。

     

ゲーム開発の攻略チャートを作りました!

CTA-IMAGE

「ゲームを作ってみたいけど、何から手を付けていいか分からない!」


そんなお悩みをお持ちの方向けに、todoがアプリをリリースした経験を中心に、ゲーム作りの手順や考慮すべき点をまとめたe-bookを作成しました。ゲーム作りはそれ自体がゲームのように楽しいプロセスなので、「攻略チャート」と名付けています。


ゲームを作り始めた時にぶつかる壁である「何をしたら良いのか分からない」という悩みを吹き飛ばしましょう!