【Unity2D】スクロール処理とエリアの移動処理をどうするか

Unity2D

Unity2D ARPG

こんにちは。なおキーヌです。

ブログ毎日更新は318日目になります。

前回「【Unity2D】アクションRPGにおいて攻撃の爽快感は必須」にてアクションゲームにおける爽快感の大切さを考えました。

今回はスクロールとエリア移動について考えてみましょう。

スクロールについて

普通のRPGでいえば、プレイヤーキャラクターを中心に画面が動いてスクロールして
階段があったりしてエリア移動で画面が暗転したりトランジションしたりしますよね。

ARPGも例外ではないのですが、ゼルダの伝説夢を見る島(GB版)はエリアごとに区切られていました。

初代ゼルダもそんな感じですね。

スクロール処理というのはUnityではカメラを使えば簡単なのですが、
カメラを使わないタイプのプログラミングであれば結構面倒くさい処理になります。

スクロールの基本的な仕組み的には

  • 描写
  • 全ての描写物の座標をずらす
  • 描写

を繰り返すわけですね。

プレイヤーが動いているようにみえてプレイヤーは中心から動いていないので、
素人が作った始めに作るスクロール処理は周りが大体面白いことになったりします(笑)

その点、Unityはカメラを動かすだけなのでスクロール処理はめちゃくちゃ楽です。

最も簡単な方法は、プレイヤーオブジェクトにカメラの座標を同期させるだけでカメラがプレイヤーに追従します。

3Dゲームなんかは普通ですが、2Dゲームでも3Dゲームの考え方が出来るのはメチャクチャ楽ですよね。

しかも基本的にZ軸は重なりだけを考えるだけなので3Dほど複雑な処理もいりません。

エリア移動について

エリア移動はシームレスなゲームでなければ基本的に暗転して、
その間に別の場所に瞬間移動させて画面を明るくするというのが基本になりますね。

これは今回作っていくARPGでも同じで、ダンジョンに入る時や家に入る時の仕組みとして実装します。

単純に1枚フェード用の画面全体を覆うグラフィックを用意して最前面に設置し、
何かがあれば関数を呼び出してフェードインしたりフェードアウトしたりするようにすると便利に扱えます。

あとは画面が暗転している時にキャラクターを移動させたりして、
準備ができたら暗転解除と言った感じでしょうか。

Unityであればシーンを切り替えるときに暗転してないと、
パッと切り替わってゲーム感が薄れてしまうので注意しましょう。

1画面スクロールを実装していく

今回作っていくのはゼルダの伝説や、聖剣伝説1のような1画面で構成されて、
隣のエリアにいくときは1画面分スクロールするという仕組みにしていきます。

Unityで作る場合は先ほども言った通り、カメラを固定した状態で上下左右のスクロールスイッチがONになったら
指定の方向にカメラを1画面分ずらすという処理をすれば完成です。

プログラミングだけでやるゲームの場合はそのままだとキャラクターが動かないので、
一緒にスクロールしてやる必要があるのですが、Unityの場合は気にしなくてもいいのでめちゃくちゃ楽ですね。

昔に比べてゲーム作りが本当に楽になったと思います。

私も早くゆっくりと作りたいものです。

それでは。