Unity簡単2Dゲームの作り方【第1回】プロジェクト準備とマップ作成 | Unity入門の森 ゲームの作り方

Unity簡単2Dゲームの作り方【第1回】プロジェクト準備とマップ作成

【Unity入門】簡単2Dゲームの作り方|初心者でも作れるジャンプアクション【全6回】

この記事は「初心者でも作れるUnity簡単2Dゲームの作り方講座」の第1回です。

まずはどんな2Dゲームを作るかですが、今回はシンプルで簡単なジャンプアクションゲームを作ります。

講座は全部で6回に分かれており、初めてUnityを触る人でも自分のペースで進めていける構成になっています。

一つずつの処理を確認しながら、ゲームが少しずつ動くようになっていく楽しさを味わってみてください!

まずどんなゲームを作るか考える 簡単な2Dゲームを作ろう

今回の講座でどのようなゲームを作っていくのかを確認していきます。

まずはプレイヤーが歩くための床や、ジャンプで飛び移るための足場が必要です。

次に操作するPlayerを作成します。
Playerをシーンに配置し、キーボード入力で左右に動けるようにします。

ただ左右に動くだけではアクションゲームとして物足りないので、ジャンプもできるようにしていきます。

ジャンプを作るときには、地面にいるときだけジャンプできるようにする必要があります。

空中で何度もジャンプできてしまうと不自然なので、接地判定を使って「今プレイヤーが地面にいるかどうか」を確認できるようにします。

プレイヤーの基本的な動きができたら、見た目の動きも整えていきます。

右に進むときは右向き、左に進むときは左向きになるように、移動方向に合わせてPlayerの向きを反転させます。

さらに、歩いているときには歩きアニメーションが再生されるようにして、キャラクターが実際に動いているように見せていきます。

横スクロールアクションでは、プレイヤーが画面の外に進んでいくため、カメラもPlayerを追いかける必要があります。そこで、Playerの動きに合わせてカメラが追従する仕組みも作ります。

プレイヤーを動かせるようになったら、次はステージ内に敵を配置します。
敵は左右に動くようにして、プレイヤーの行く手を邪魔する存在にします。

敵に横から触れてしまった場合はゲームオーバーにします。

上から踏んだ場合は敵を倒せるようにします。

また、ステージから下に落ちてしまった場合もゲームオーバーになるようにします。

触れるとゲームオーバーになる危険な障害物も用意します。

最後に、ステージの終わりにはGoalを配置します。PlayerがGoalに触れたらゲームクリアになるようにします。

ゲームオーバーやクリア後にはRetry Buttonからもう一度遊べるようにします。

このように、今回作るゲームはとてもシンプルな構成ですがPlayerの移動、ジャンプ、接地判定、敵、ゲームオーバー、ゴール、リトライ、音の設定まで、アクションゲームの基本をまとめて学べる内容になっています。

最初から全部を一気に作ろうとすると難しく感じるかもしれませんが、ひとつずつ順番に実装していけば、Unity初心者の方でも少しずつゲームらしい形にしていくことができます。

さらに発展的な内容を扱った「Unity 2Dロックマン風アクションゲーム講座」もUnity入門の森で用意しています。こちらも併せてご活用ください。
Unity 2Dアクションの作り方 ロックマン風横スクロールアクションゲームを作る
「Unityで2Dアクションゲームを作ってみたい!」「UnityとC#でロックマン・スーパーマリオ・星のカービィのような2D横スクロールアクションゲームを作ってみたい!」「ツルツル滑る床、坂道、浮遊ブロック、水中ステージ等のギミック開発や敵...

下準備をしよう

まずはUnityプロジェクトを作成し、2D横スクロールアクションゲームを作れる状態にしていきましょう。

記事を読むタイミングによって、Unity HubやUnityエディタの画面が多少異なる場合があります

基本的な流れは大きく変わらないため、画面の名前や配置が少し違っていても近い項目を探しながら進めてみてください。

Unityのインストールがまだの方は、先にUnityをインストールしておきましょう。インストール方法については、以下の記事を参考にしてみてください。

【Unity入門】Unity HubとUnityエディタのダウンロード・インストール方法 日本語化も解説!
「Unityの初期設定って難しそう…」「初心者だけどできるのかな?」と思っていませんか?でも、ご安心ください!Unityのインストールは、実はとても簡単。この記事のとおりにすれば、初心者の方でも簡単にUnityをインストールし、すぐにゲーム...

Unity Hubを開いてプロジェクトを作成しよう

まずは、Unity Hubを開きましょう。

Unity Hubは、Unityのプロジェクトを作成したり、インストールされているUnityのバージョンを管理したりするためのアプリです。

Unityで新しくゲームを作るときは、基本的にこのUnity Hubからプロジェクトを作成します。

Unity Hubを開いたら、左側にある「プロジェクト」タブを選択します。
その中にある「新しいプロジェクト」をクリックしてください。

Unityのバージョンを選ぼう

次に、使用するUnityエディタのバージョンを選びます。

この講座では例として、Unity 6000.4.7f1 を使用します。

ただし、Unity 6であれば基本的には同じように進められるため、必ずしも完全に同じバージョンである必要はありません。

テンプレートを選ぼう

今回は2Dゲームを作成するので、テンプレートは「Universal 2D」を選択します。

テンプレートとは、プロジェクトを作成するときの初期設定のようなものです。

Unityには、3D用、2D用、URP用など、いくつかのテンプレートがあります。
今回は2D横スクロールアクションゲームを作るため、最初から2D向けの設定になっている「Universal 2D」を選んでおくと進めやすくなります。

プロジェクト名を決めよう

次に、プロジェクト名を入力します。

プロジェクト名は自由に決めて大丈夫ですが、この講座では分かりやすいように

という名前にしておきます。

もちろん、自分で分かりやすい名前に変更しても問題ありません。プロジェクトの保存場所も、自分が管理しやすい場所を選んでおきましょう。

プロジェクトを作成しよう

ここまで設定できたら、「プロジェクトを作成」をクリックします。

初回起動時は、プロジェクトの作成に少し時間がかかることがあります。画面がすぐに開かなくても、そのまま待っていれば大丈夫です。

作業しやすいようにUnityの画面と入力設定を整えよう

プロジェクトが開いたら、すぐにゲームを作り始めることもできます。
ただ、その前に作業しやすいようにUnityの画面や入力設定を整えておきましょう。

SceneビューとGameビューについて

Unityには、よく使う画面として「Sceneビュー」と「Gameビュー」があります。

Sceneビュー:ゲームを作るための画面
Gameビュー:実際にゲームとして表示される画面

ゲーム制作では、プレイヤーや足場を配置しながら、「ゲーム画面ではどのように見えているか」を確認する場面が多くなります。そのため、SceneビューとGameビューを同時に見られるようにしておくと、作業がしやすくなります。

(画面の見方やUnityの基本操作について詳しく知りたい方は、以下の記事も参考にしてみてください。)

Unityの画面の見方を初心者向けに解説|6つのウィンドウの役割をざっくり理解しよう
Unityを開いたばかりで「どこに何があるかわからない」という初心者向けに、Hierarchy・Project・Inspector・Scene・Game・Consoleビューの6つのウィンドウの役割をわかりやすく解説します。Unity 6.3対応。

Gameビューの配置を変更しよう

Unityの初期配置では、SceneビューとGameビューが同じ場所のタブに並んでいる場合があります。この状態でも作業はできますが、Sceneビューを見ながらGameビューを確認したいときに、毎回タブを切り替える必要があります。

これからゲームを作っていく中で、「シーン上では足場がきちんと配置できているか」、「ゲーム画面ではプレイヤーや敵がどのように見えているか」を同時に確認することが多くなります。

そこで、Gameビューを別の場所に移動して、常に確認できるようにしておきましょう。

Gameタブをクリックしたままドラッグし、ProjectやConsoleタブがある場所の右側あたりに移動します。そこでマウスを離すと、Gameビューを別の場所に配置できます。

これで、SceneビューとGameビューを同時に確認できるようになります。

Gameビューの比率を設定しよう

次に、Gameビューの画面比率を設定します。
Gameビューの左上あたりを見ると、「Free Aspect」と表示されている部分があります。

これは、Gameビューの表示比率を指定する場所です。初期設定では、Free Aspectになっていることが多いです。

Free Aspectは、Gameビューのウィンドウサイズに合わせて自由に比率が変わる設定です。試しにGameビューの大きさを変えると、画面の縦横比も一緒に変わります。

ですが、ゲーム制作中に画面の比率が毎回変わってしまうと見え方を確認しづらくなります。

ある画面サイズではプレイヤーや足場がちょうどよく見えていても、別の比率では画面の端が見切れたり、余白が多く見えたりすることがあります。

本格的なゲーム制作では、画面サイズや解像度が変わったときの見え方も考えて調整していきます。

ただし、今回はUnity初心者向けのチュートリアル講座です。

まずはPC向けのゲームを想定してGameビューの比率を16:9に設定して進めていきます。

Gameビュー左上の「Free Aspect」をクリックし、一覧の中から「16:9」を選択しましょう。

これで、Gameビューが16:9の比率で表示されるようになります。

画面サイズ変更に対する本格的な対策を学びたい方は、以下の参考記事も読んでみてください。

参考記事:Unityの画面のアスペクト比と解像度を自動変換 全スマホ・複数解像度に対応させる

Unityの画面のアスペクト比と解像度を自動変換 全スマホ・複数解像度に対応させる
前回で効果音も付けてゲームとしては完成という状態になりました。前回の記事↓今回は最終回、スマホ解像度対応をして完成を目指します。AndroidでもiPhoneでもタブレット端末でも、アスペクト比や解像度を自動対応させるスクリプトを作っていき...

キーボード入力の設定をしよう

次に、キーボード入力の設定を行います。

今回の2D横スクロールジャンプアクションゲームでは、キーボードを使ってプレイヤーを左右に動かしたり、ジャンプさせたりします。そのためにスクリプトからキーボード入力を受け取れるようにしておきます。

Unityには入力を扱う仕組みとして Input System があります。
Input System はとても便利な機能ですが、初心者が最初に学ぶには少しわかりにくい部分があります。

専用の設定ファイルを作成したり、Actionを登録したり、スクリプト側で入力イベントを受け取ったりする必要があります。

本格的なゲーム制作では便利ですが、今回はまず「キーを押したらプレイヤーが動く」という基本の考え方を分かりやすく学ぶことを優先します。

そこで、この講座では古い入力方式である旧Input System も使えるように設定します。
旧Input System では、スクリプトに次のような形で入力処理を書くことができます。

これは、Spaceキーが押された瞬間に反応する書き方です。
コードを見たときに、「Spaceキーでジャンプするんだな」とわかりやすいのが特徴です。

今回のような初心者向け講座では、このように直感的に読める書き方の方が理解しやすいです。
そのため、まずは旧Input Systemを使って、Unityでの入力処理に慣れていきましょう。

それでは、Unityの入力設定を変更していきます。画面左上のメニューから、Edit > Project Settings を選択します。

Project Settingsウィンドウが開いたら、左側のメニューから Player を選択します。

Playerの設定画面を開いたら、下の方にある Other Settings を探します。

Other Settingsの中に、Active Input Handling という項目があります。

この項目は、Unityでどの入力方式を使うかを設定する場所です。ここを Both に変更しましょう。

Bothにすると、新しいInput Systemと古いInput Systemの両方が使える状態になります。
設定を変更すると、Unityから再起動を求められる場合があります。その場合は、表示に従ってUnityを再起動してください。

再起動後にプロジェクトを開けば設定は完了です。
設定が終わったら、Project Settingsウィンドウは閉じておきましょう。

素材を準備しよう

次に、ゲームに使う画像素材を準備していきます。以下のリンクから素材をダウンロードしてください。

横スクロールアクションゲーム画像素材.zip

今回の講座では、プレイヤー、床、足場、敵、ゴールなどの画像素材を使って、2D横スクロールアクションゲームを作成していきます。

素材をダウンロードできたら、Zipファイルを右クリックし、「すべて展開」を選択して解凍しましょう。

解凍できたら、「横スクロールアクションゲーム画像素材」の中にさらに「横スクロールアクションゲーム画像素材」というフォルダがあると思います。

 

このフォルダをUnityのProjectウィンドウ内にドラッグ&ドロップしてください。

画像素材のサイズを調整しよう

素材をUnityに入れたら、次に画像の表示サイズを調整していきます。

Unityでは画像素材をそのまま使うと、思ったより大きく表示されたり、小さく表示されたりすることがあります。そこで、画像の大きさをそろえるために、Pixels Per Unitという設定を変更します。

まず、Projectウィンドウ内にあるプレイヤーとスライムの画像をすべて選択します。Shiftキーを押しながら画像をクリックするとまとめて選択できます。

3種類の画像を選択したら、Inspectorウィンドウの中にあるPixels Per Unitを「1254」に変更しましょう。

変更したら、Inspectorの下の方にあるApplyボタンを押して設定を反映します。

次に、CTRLキーを押しながら、とげ、ゴールポール、地面、足場を選択します(背景は選択しないことに注意)。

こちらはPixels Per Unitを「418」に変更しましょう。

こちらも変更したら、Applyボタンを押して反映します。

ちなみに、ここまでの操作の途中で誤って画像の右中央に付いている再生ボタンのようなところを押すと画像から別の画像が出てくるような状態になります。

同じ画像に見えますが、この右側を選んでもPixels Per Unitの数値調整などはできないので気を付けてください。

Pixels Per Unitとは?

Pixels Per Unitは直訳すると、「1単位あたりのピクセル数」という意味です。
もう少し分かりやすく言うと、画像の何ピクセル分をUnity上の1単位として扱うかを決める設定です。

例えば、今回使用する「プレイヤー1」の画像サイズを見てみると、1254 × 1254pxになっています。

この画像のPixels Per Unitを1254に設定すると、画像の横幅1254pxがUnity上の1単位として扱われます。つまり、この画像はUnity上で横1マス、縦1マスの大きさになります。

つまり、Pixels Per Unitを画像の基準サイズに合わせて設定することで、画像を1マス、2マスというように、マス目に合わせた大きさで扱いやすくなります。

アクションゲームに使うマップを作成しよう

ここからはゲームの土台になるマップを作成していきます。

背景を配置しよう

Projectウィンドウから、Assets > 横スクロールアクションゲーム画像素材のフォルダを開きます。その中にある「背景」の画像をSceneビューにドラッグ&ドロップして配置しましょう。

背景を配置できたら、Hierarchyで背景を選択します。

選択すると、Inspectorウィンドウに背景の設定が表示されます。まずは、Transformを以下のように設定しましょう。ゲーム画面に合わせて大きさを微調整します。

次に、Sprite Renderer の中にある Order in Layer を設定します。

Order in Layer とは、画像が重なったときにどの画像を手前に表示するかを決めるための設定です。数字が大きいほど手前に表示され、数字が小さいほど奥に表示されます。

デフォルト値は0ですが、背景はプレイヤーや地面よりも奥に表示したいので、Order in Layer を -1 に設定しておきましょう。

地面を配置しよう

次に、プレイヤーが歩くための地面を配置していきます。

Projectウィンドウから、Assets > 横スクロールアクションゲーム画像素材のフォルダを開きます。その中にある「地面」の画像をSceneビューにドラッグ&ドロップして配置しましょう。

地面を配置できたら、これを Prefab にします。

Prefabとは?

Prefabとは、かんたんに言うと「コピーして何度も使える部品」のことです。
たとえば、同じ地面をステージの中に何個も置きたいとします。このとき、毎回最初から地面を作って、同じ設定をして、同じように配置していくのは大変です。

イメージとしてはクッキーの型のようなものです。一度クッキーの型を作っておけば、同じ形のクッキーを何枚も作ることができます。Prefabもそれと同じ。一度ゲーム用の部品として保存しておけば、同じオブジェクトを何度も使えるようになります。

さらに便利なのは、あとからPrefabの設定を直すと、そのPrefabから作ったオブジェクトにも変更を自動的に反映できることです。

今回のように地面や足場をたくさん配置するゲームでは、Prefabにしておくと作業がとても楽になります。

それでは、地面をPrefabにしていきましょう。
ProjectウィンドウのAssetsフォルダ内で右クリックし、Create > Folder を選択します。
名前を「Prefabs」に変更しましょう。

次に、Hierarchyウィンドウにある「地面」を、ProjectウィンドウのPrefabsフォルダの中にドラッグ&ドロップします。

これで、地面をPrefabにすることができました。では、実際に地面を並べていきましょう。

今回は横スクロールアクションなので、地面を横に並べて、プレイヤーが歩ける場所を作っていきます。まず、Sceneビューの左上にある磁石マークをクリックします(磁石マークは2つありますが左側をクリックして青色の選択状態にします)。

ついでにその左側にあるグリッド表示も選択しておきます(これはやらなくても問題ありません)。

左右2つある磁石マークの右隣にある数値を 1 に設定しましょう。

これはスナップ機能と呼ばれるもので、オブジェクトを決まった間隔で動かしやすくするための機能です。こうしておくと、オブジェクトを移動するときに1マスずつ動かせるようになります。
地面のように、同じ大きさの画像をきれいに並べたいときに便利です。

地面_0を選択し、InspectorのTransformからPositionを以下のように設定します。

次に、地面を複製して増やしていきます。SceneビューまたはHierarchyウィンドウで地面を選択した状態で、Ctrl + D を押します。これで地面が複製されます。複製した地面を右に移動させましょう。

(↑スナップ機能を使ってオブジェクトを動かすときは画面左側にあるボタンの上から二つ目の上下左右移動モードにしておきます。手のマークの一段下にある4方向の矢印が描かれているボタンです。この状態でオブジェクトを選択し、赤と黄色の矢印をクリックしながら動かしてみてください。たしかに1マスずつ移動することがわかります。)

ここで、地面と複製した地面を見てみると、少し隙間ができてしまっていると思います。このままだと、地面がきれいにつながって見えず、少し気持ち悪い見た目になってしまいます。そこで、地面画像の設定を調整しておきましょう。

Projectウィンドウから、Assets > 横スクロールアクションゲーム画像素材のフォルダを開きます。その中にある「地面」の画像を選択してください。

Inspectorの中にある Pixels Per Unit の値を 385 に変更しましょう。

Pixels Per Unitは、画像をUnity上でどのくらいの大きさとして扱うかを決める設定です。

値を変更したら、Inspectorの右下にある Apply をクリックしてください。

これで違和感がなくなりました。

ではまた、同じようにCtrl + Dで複製し、右に移動する作業を繰り返して、地面を横に並べていきます。

最終的には、以下の画像のように地面を配置しましょう。地面1つで3マス分として表記しています。

 

↑こんな形のステージを作ります。ご自分で好きな配置に挑戦したければ好きな配置を行っても構いません。

↑シーンビューで注目している画面位置を変更したい場合は、マウスの右クリックを押しっぱなしにしてみてください。すると一時的にツールメニューの上下左右モードから手のアイコンが選択状態になります。そのままマウスを動かした方向に画面中央を動かすことができます。また、マウスホイールを動かすと拡大縮小なども行えます。

シーンビューの操作方法については以下の記事も参考にしてみてください。

(参考記事:Unityの画面の見方を初心者向けに解説|6つのウィンドウの役割をざっくり理解しよう

Unityの画面の見方を初心者向けに解説|6つのウィンドウの役割をざっくり理解しよう
Unityを開いたばかりで「どこに何があるかわからない」という初心者向けに、Hierarchy・Project・Inspector・Scene・Game・Consoleビューの6つのウィンドウの役割をわかりやすく解説します。Unity 6.3対応。

足場を配置しよう

次に、ジャンプで乗るための足場を配置していきます。

地面と同じように、Projectウィンドウから、Assets > 横スクロールアクションゲーム画像素材のフォルダを開きます。その中にある「足場」の画像をSceneビューにドラッグ&ドロップして配置しましょう。

足場もゲーム内で何度か使うのでPrefab にしておきます。
Hierarchyウィンドウにある「足場_0」を、ProjectウィンドウのPrefabsフォルダの中にドラッグ&ドロップしてください。

これで足場のPrefabが作成されます。

Hierarchyで足場_0を選択し、InspectorのTransformのPositionを以下のように設定しましょう。

つぎに、足場を Ctrl + D で複製します。

複製した足場を選択して以下のように設定しましょう。

以下の画像のように足場を配置できれば完璧です。

Hierarchyを整えよう

ここまで作成してからHierarchyウィンドウを見てみると、地面や足場がたくさん並んでいて、少しごちゃごちゃしていると思います。

↑多数のオブジェクトが並んでいてわかりづらいですね(ちなみにオブジェクトの並び順が異なっていても今回は問題ありません)

このままでもゲームを作ることはできますが、オブジェクトが増えてくるとどれが地面で、どれが足場なのかわかりにくくなってしまいます。

そこで、地面と足場をグループ分けして、Hierarchyを見やすく整理しておきましょう。

まずは、地面をまとめるための空のオブジェクトを作成します。
Hierarchyウィンドウの何もない場所で右クリックし、Create Emptyを選択しましょう。
空のGameObjectが作成されたら、名前を「Grounds」に変更します。

必須ではないですが、ここまでの地面の数値を変化させたくない場合はGroundsのTransformは(0, 0, 0)に設定しておきましょう。

次に、Hierarchyウィンドウにある「地面」をすべて選択します。複数選択したい場合は、Shiftキーを押しながら選択すると、まとめて選ぶことができます。
地面をすべて選択できたら、そのままGroundsにドラッグ&ドロップしましょう。

これで、地面をGroundsの中にまとめることができました。Hierarchyウィンドウを見ると、地面がGroundsの中に入って、かなりすっきりしたと思います。

同じように、足場もまとめておきましょう。今後、足場を増やす可能性もあるため最初のうちに整理しておくと後から作業しやすくなります。

Hierarchyウィンドウの何もない場所で右クリックし、Create Emptyを選択します。作成された空のGameObjectの名前を「Scaffolds」に変更しましょう。

ScaffoldsのTransformもここでは(0, 0, 0)としておきました。

最後に、Hierarchyウィンドウにある足場をShiftキーでまとめて選択し、Scaffoldsにドラッグ&ドロップします。

Unityを使ったゲーム制作ではオブジェクトが増えてくるほどHierarchyが見づらくなります。

今回のように同じ種類のオブジェクトを空のGameObjectにまとめておくと、後から探しやすくなり、作業もしやすくなります。

プロジェクトファイルのダウンロード

今回の講座で作ったプロジェクトファイルのダウンロードリンクを用意しました。

プロジェクトファイルのダウンロードはこちら >>

今回のまとめ

今回は2D横スクロールジャンプアクションゲームを作るための下準備とマップの作成を行いました。

まず、Unity Hubから新しい2Dプロジェクトを作成し、Gameビューの比率や入力設定など、作業しやすい環境を整えました。

そのあと、素材をUnityに読み込み、背景、地面、足場をSceneビューに配置しました。

地面や足場は今後も何度も使うオブジェクトなのでPrefabとして保存しました。Prefabにしておくと同じオブジェクトを簡単に複製して配置できるようになります。

また、地面を並べたときに隙間ができてしまう場合は、画像のPixels Per Unitを調整して綺麗に配置できるようにすることを学びました。

ここまででプレイヤーを動かすためのステージの土台ができました。

次回の記事では、このマップの上を動くPlayerを作成していきます。

次の記事:

Unity簡単2Dゲームの作り方【第2回】プレイヤーの移動とジャンプを実装する
この記事は「初心者でも作れるUnity簡単2Dゲームの作り方講座」の第2回です。前回の記事では完成イメージを確認し、Unity 2Dプロジェクトの作成、Gameビューの16:9設定、旧Input Systemの設定、素材の読み込み、背景・地...

 

【ゲームの作り方講座もプレゼント中!】

現場レベルのゲーム制作が、すべてここで学べます。

【永久会員チケット】

永久会員チケット|Unity入門の森

全講座を見放題で学ぶ

ソースコード・素材・プロジェクトすべて公開。
Unityの基礎から応用まで、一生使えるスキルを体系的に習得。

コメント

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