第3回|スマホで遊べる!Unityジャンプゲーム制作講座 | 物理ブロックの作成と画面スクロール
3-1 前回の復習と今回の課題
前回は、Heroを左右に動かしたり、ジャンプさせたり、スマホ用のボタンで操作できるようにしました。
この回では、ジャンプゲームのステージを作っていきます。
3-1-1 今回作る内容
今回は、前半でステージで使うブロックを作成します。
ブロックには、ゴール用のブロック、すり抜けられない硬いブロック、下からすり抜けられる普通のブロック、細いブロック、すべるブロック、跳ねるブロックなどがあります。
これらのブロックは基本的な作り方がほとんど同じです。
・ブロック画像の設定を確認する
・TagとLayerを整理する
・ブロックに必要なコンポーネントを確認する
・Physics Material 2Dを作成する
・GoalBlockを作る
・HardBlockを作る
・BaseBlockを作る
・NarrowBlockを作る
・SlipBlockを作る
・BoundBlockを作る
・Platform Effector 2Dですり抜け足場を作る
後半では、今回のメインとして、カメラ追従と背景の動きを作ります。
Heroが上にジャンプして進んでいくと、カメラもHeroを追いかけるようにします。
さらに、背景をHeroの動きに合わせて少し動かし、奥行きのあるゲーム画面にしていきます。
・背景画像を配置する
・カメラ追従のプログラムを作る
・背景を動かすプログラムを作る
3-2 ブロックの作成の準備
3-2-1 ブロック画像の設定
まず、ブロック画像の設定を確認します。
今回使用するブロック画像は、Assets内の 04_Sprits > Blocks フォルダに入っています。
※まだ取得できていない場合は、第一回の記事で案内したURLから取得してください。

今回のブロック画像は、横長の画像として大きめに作成されています。
そのため、Inspectorでブロック全ての画像を選択し、Pixels Per Unit を 1000 に設定しておきます。

Pixels Per Unit は、画像をUnity上でどのくらいの大きさとして扱うかを決める設定です。今回のように Pixels Per Unit を 1000 にすると、画像の1000ピクセル分が、Unity上の1ユニットとして扱われます。
ブロック画像のサイズ感をそろえるため、今回使用するブロック画像は、基本的に Pixels Per Unit を 1000 で統一しておきます。
ブロックの大きさを少し変えたい場合は、Pixels Per Unitを毎回変更するのではなく、Scene上のScaleやBox Collider 2Dのサイズで調整します。
特にこの後作成する「NarrowBlock」のような細いブロックでは、見た目だけでなく、当たり判定の大きさも確認する必要があります。
3-2-2 ブロック作成に使う基本設定
ここでは、ブロックを作る前に、今回使う基本設定を確認しておきます。
今回のブロック作成で重要になるのは、次の5つです。
・Tag
・Layer
・Box Collider 2D
・Physics Material 2D
・Platform Effector 2D
それぞれの役割を確認してから、実際にブロックを作っていきます。
Tagとは
Tagは、オブジェクトに名前のような目印をつける機能です。
スクリプトでは、Tagを使って、ぶつかった相手が何なのかを判定できます。
たとえば、前回作成した HeroController では、次のような処理で、ぶつかった相手が地面かどうかを調べています。
if (collision.gameObject.CompareTag("Ground"))
{
if (transform.position.y > collision.transform.position.y)
{
isGround = true;animator.SetBool("isJump", false);
}
}CompareTag("Ground") は、ぶつかった相手の Tag が Ground かどうかを確認する命令です。
Hero が Ground タグのついたブロックに着地すると、isGround が true になり、もう一度ジャンプできるようになります。
今回使用する主なTagは、次の2つです。
Ground - Heroが着地できるブロックに設定します。
Finish - ゴール用のブロックに設定します。
Layerとは
Layerは、オブジェクトをグループ分けするための設定です。
Tagが「スクリプトで判定するための目印」だとすると、Layerは「物理判定や管理を分けるためのグループ」と考えると分かりやすいです。
Ground - 通常の足場に設定します。
Enemy - 出現する敵との当たり判定を管理します。
TagとLayerは似ていますが、役割が違います。
Tagは、スクリプトで「何に触れたか」を判定するために使います。
Layerは、物理判定やオブジェクトの分類を整理するために使います。

Box Collider 2Dとは
Box Collider 2Dは、四角形の当たり判定を作るコンポーネントです。
画像が表示されていても、Colliderがなければ、Heroはその上に乗ることができません。
今回のブロックは横長の形なので、基本的には Box Collider 2D を使います。
ブロック画像とBox Collider 2Dの大きさがずれている場合は、Box Collider 2Dの Edit Collider を使って、見た目に合うように調整します。
特に NarrowBlock のように横幅が小さいブロックでは、Colliderのサイズ確認が重要です。
Physics Material 2Dとは
Physics Material 2Dは、2D物理の性質を変えるための素材です。
今回使う設定は、次の2つです。
■ Friction
摩擦の強さです。
値を小さくすると、すべりやすくなります。
■ Bounciness
跳ね返りの強さです。
値を大きくすると、よく跳ねるようになります。

ここから先は

Unityの基本操作やC#の基礎を学んだ方向けの、Androidスマホ対応ジャンプゲーム制作講座です。全8回を順番に進めながら、Input…
よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!
