【Unity/2D】スイカゲーム風の落ち物ゲームを作ってみる話 #1 新規プロジェクト作成~ポインターの登場

記事をご覧いただき、誠にありがとうございます。
投稿主の無能です。

今回は一時期話題となったスイカゲーム風の落ち物ゲームを作っていきたいと思います。
数多くのスイカゲームの作り方の一つとして、本記事が参考になれば幸いです。

それでは早速作っていきましょう。

前提条件

一応の前提条件として、Flappy Bird風ゲームを作ったことがある、というレベルの想定になります。

UnityやVisual Studioのごく基本的な操作は、Roll a Ball(玉転がし)を作ると分かると思うので、Unityに触るのが初めての方は、先にRoll a Ball(玉転がし)を作って、基本的な操作を最低限覚えてから改めて本記事に戻ってこられることをお勧めします。

2Dシューティングを作った方は復習部分が多いと思うので問題無く作成できると思います。

以下が無能の開発環境ですので、良ければ参考にしてください。
  • PC:HP Pavilion Aero Laptop 13(AMD Rizen 5 7535U with Radeon Graphics RAM:8GB)
  • Unity Editor:Unity 6(6000.0.24f1)
  • Visual Studio:Visual Studio 2022 17.11.5
それではやっていきましょう。

プロジェクトの新規作成

まずは新規プロジェクトを作成します。
今回は2Dのゲームなので、プロジェクトは2D URPを選択し、名前を決めて任意の場所を保存場所に指定します。

プロジェクト名は「SuikaGameSample」とします。
念の為に保存場所は日本語が含まれていない保存場所を選択します。
(Windowsでデフォルトで作成されているマイドキュメントフォルダ等はOK)

プロジェクトの新規作成

プロジェクトが作成されると、プロジェクトが起動します。

プロジェクト起動直後
レイアウトは各自作業に適したレイアウトにする

無能なりの使いやすいレイアウトにしてあるので、レイアウトは各自作業に適したレイアウトを用意してください。

それでは、まず果物を入れる容器を用意しましょう。

容器を用意する

オブジェクトの作成

まず果物を入れるための容器を作ります。

容器と言っても、薄い長方形を三辺に設置するだけです。
簡単ですね。

まずGameObject > Create Emptyで空のオブジェクトを作り、名前を「Container」とします。
これが容器の親オブジェクトになります。

空のオブジェクトを作成

名前を「Container」にする

次に容器の底を作ります。

GameObject > 2D Object > Sprite > Squareから四角を作り、名前を「Container_Bottom」にして、先程作ったContainerの子オブジェクトにします。

GameObject > 2D Object > Sprite > Squareで四角を作成

名前を「Container_Bottom」にする

Containerの子オブジェクトにする
(ContainerにContainer_Bottomをドロップ)

Squareを作成

TransformのScaleでサイズを変更して横長の薄い長方形にします。

TransformのScaleでサイズを変更

Gameビュー

作った容器の底をゲーム画面の下側に配置します。

ゲーム画面の下側に配置

Gameビュー

次に容器に必要なコンポーネントをアタッチします。

コンポーネントをアタッチ

今のままだとただ長方形のオブジェクトを作っただけで、容器としての機能を持っていません。
容器として機能するためには、落下してくる果物(オブジェクト)を受け止めるために当たり判定が必要になります。

Container_Bottomを選択した状態で

Container_Bottomを選択した状態
  • メニューのComponent > Physics 2D >Box Collider 2Dを選択
メニューのComponent > Physics 2D >Box Collider 2Dを選択


または
  • Inspectorビュー最下部のAdd Componentボタンを押して「BoxCollider 2D」を選択
Inspectorビューの最下部のAdd Componentボタンを押す

検索部分に「box」と入力しBoxCollider 2Dを検索する
Box Collider 2Dを選択する

でContainer_BottomにBoxCollider 2Dがアタッチされます。

Container_BottomにBoxCollider 2Dがアタッチされる

どちらの方法でも構いませんが、検索した方が早いので無能は以降の説明で後者のAdd Componentボタンを使います。

これで容器の底ができました。
次に容器の左右を作ります。

容器の左右部分を作成

同様の手順で容器の左右を作ってもいいのですが、同じ作業を繰り返すのは面倒ですね。
ですので、底の部分を複製して、位置を変えてあげます。

Container_Bottomを選択した状態で
  • 右クリックメニュー > Duplicate
右クリックメニュー > Duplicate

または
  • Ctrl+dキー
で複製します。

無能は以降の説明で後者のショートカットキーを使います。

ここでは二つほど複製します。

二つほど複製

次に複製した二つの名前をそれぞれ「Container_Left」と「Container_Right」に変更し、サイズを整えそれぞれ左右に配置します。

複製した二つの名前をそれぞれ「Container_Left」と「Container_Right」に変更

Container_Left

Container_Right

Gameビュー

これで果物を落下させる容器ができました。

次に果物を落下させるポインターを作ります。

果物を落下させるポインターを作成

果物を落下させるポインターを作ります。
現実世界で言うと果物を持った手のイメージになります。

この記事ではポインターを円(丸)とします。

Hierarchyビューのメニュー > 2D Object > sprite > Circleで円を作り、名前を「Pointer」とします。

Hierarchyビューのメニュー > 2D Object > sprite > Circleで円を作成

名前を「Pointer」にする

そして作った容器の上部に配置します。

ゲーム画面の上部に配置

Gameビュー

そして果物の表示を手前にして、ポインターの表示を奥にするため、Sprite RendererのAdditional SettingsのOrder in Layerを-1にします。

Sprite RendererのAdditional SettingsのOrder in Layerを-1にする

これでポインターができました。
しかし、移動する機能をアタッチしていないので動けません。

ですので、Rigidbody2Dをアタッチして動けるようにします。

Pointerを選択してInspectorビューのAdd ComponentボタンからRigidbody2Dをアタッチします。

Pointerを選択してInspectorビューのAdd ComponentボタンからRigidbody2Dをアタッチ

Rigidbody2Dをアタッチ

Rigidbody2Dをアタッチしたら、重力やその他の影響を受けないように、Body TypeをKinematicに変更します。

Body TypeをKinematicに変更

デフォルトではBody TypeはDynamicになっており、重力やその他の影響も受ける設定になっています。
Body TypeをKinematicに変更すると、重力やその他の影響を受けない、つまりスクリプトからの命令でのみ動くオブジェクトになります。

アクションゲームで例えると、一定範囲を規則的に動くプレイヤーが乗るリフトなんかですね。
Body TypeがDynamicだとプレイヤーの運動量がリフトに影響しますが、Kinematicだと影響を受けなくなります。

RigidbodyのBody Typeについて覚えておきましょう。

これでゲーム画面に果物を受け止める容器(Container)と果物を落下させるポインターができました。

まとめ

今回は
  • 新規プロジェクトを作成した
  • 果物を受け止める容器(Container)を作成した
  • 果物を落下させるポインターを作成した
ということやりました。

次回は、ポインターを容器の範囲内で動かそうと思います。

では、また次回!

コメント