見出し画像

第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
跳ね返りの強さです。
値を大きくすると、よく跳ねるようになります。

ここから先は

10,425字 / 24画像
この記事のみ ¥ 980

Unityの基礎を学んだ次のステップとして、Androidスマホで遊べるジャンプゲームを全8回で完成させます。 Input System、スマホUI、物理演算、配列による自動配置、Time.deltaTime、三角関数、コルーチン、ステージ管理まで、ゲーム制作で役立つ仕組みを実践的に学べます。

Unityの基本操作やC#の基礎を学んだ方向けの、Androidスマホ対応ジャンプゲーム制作講座です。全8回を順番に進めながら、Input…

よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!