「簡単にスイカゲームっぽい」落ち物ゲームをUnityで作成してみます。
ミニゲーム的なチュートリアルで、初めてUnityでゲームを作る人でも出来る内容です。
はじめに
今回作成するのは昔から似たようなゲームが沢山ある「上から落ちてくる落ち物ゲーム」で「同じものが合体するマージゲーム」ですね。最近だとスイカゲームが流行っていますね。
完成形を作成するのではなく、練習的なミニゲームを想定して作成していきます。音や開始画面、オプションやオンラインランキングなどは作成予定無しです。基本的なゲーム部分を作成していきます。
Unityのバージョン
今回は「Unity 2022.3.10f1」バージョンで作成していきます。OSはWindows10です。
UnityHubから「新しいプロジェクト」を選択。
テンプレートは「2D」を選択、プロジェクト名は「SuicaClone」としています。
作成開始
第1回目は簡単な枠を作成し、物体を落とすところまで実装していきます。
画面の枠を作成
Hierarchyで右クリック、「2DObject」→「Sprites」→「Square」を追加。
名前を「Bottom」に変更して、Transform(位置)を変更、「AddComponent」から「BoxCollider2D」をアタッチして下記の様にします。
同じように「2DObject」→「Sprites」→「Square」を追加して、Transformを変更し「BoxCollider2D」をアタッチ、壁にします。これで枠が完成です。
落ちる物体を作成
「2DObject」→「Sprites」→「Circle」を追加。
名前をseedに変更し、TransformのScaleを変更。「AddComponent」から「Rigidbody2D」と「CircleCollider2D」をアタッチ。
これでゲーム画面に「枠」と「丸い物体」ができます。
スクリプトの作成
作成した丸い物体を上から落とすようにスクリプトを作成していきます。
ProjectのAssetsフォルダ内にScriptsフォルダを作成。右クリックして「Create」→「C#Script」を作成、スクリプト名をseedとします。
スクリプトの中身を下記にします。
using UnityEngine; public class seed : MonoBehaviour { private Rigidbody2D _rb; private bool isDrop = false; void Start() { _rb = GetComponent<Rigidbody2D>(); } void Update() { if (Input.GetMouseButton(0) && isDrop == false) Drop(); if (isDrop) return; Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); mousePos.x = Mathf.Clamp(mousePos.x, -2.7f, 2.7f); mousePos.y = 3.5f; transform.position = mousePos; } private void Drop() { isDrop = true; _rb.simulated = true; } }
スクリプト内容の簡単な解説
- マウスを動かしたら物体の位置を変更。Mathf.Clampは横の最大値で枠外に行かないようにしています。
- マウスクリック後はマウス操作で物体を動かさず、落下させます。
動作確認
スクリプトをseedにアタッチして、Rigidbody2Dのsimulatedのチェックを外します。
実行すると下記の様にマウスを動かすと物体が横に動き、マウスクリックで物体が下に落ちます。
第1回目は「物体を落とす」ここまで。次回は物体の種類を増やすのと、同じ物体が重なったら合体させていきます。