Connection Puzzle / Unity Project
SameGamePuzzle
同じ種類のバブルをドラッグで順番につなぎ、条件を満たしたグループを消してスコアを獲得するパズルです。 マウスとタッチの入力、選択中データの管理、制限時間のあるゲーム進行を学ぶために制作しました。
Overview
プロジェクト概要
Unity 6とC#を使用した学習プロジェクトです。 ゲーム開始時に複数種類のバブルを生成し、近くにある同種バブルをなぞってつなぎます。 現在のSceneでは60秒、初期バブル60個、削除に必要な最低数3個に設定しています。
- Status
- Learning Project
- Engine
- Unity 6(6000.2.13f1)
- Language
- C#
- Input
- マウス / タッチ(Input System)
Implementation
実装した主な機能
バブルの生成
登録したPrefabから種類と位置をランダムに選び、画面上部から物理挙動で落下するバブルを生成します。
マウス・タッチ入力
押した瞬間、押している間、離した瞬間を分けて取得し、マウスとタッチの両方で選択操作ができます。
ドラッグによる連結
直前に選んだバブルとの種類と距離を確認し、条件を満たした未選択のバブルだけを連結リストへ追加します。
選択経路の表示
選択中のバブル位置をLineRendererへ渡し、ドラッグしている経路を線で表示します。
削除・補充・スコア
最低数以上をつないだ場合に対象を削除し、実際に消えた数だけ新しいバブルを補充して、1個100点を加算します。
追加削除
最低数を超えてつないだ数に応じてランダムな追加削除候補を増やし、特別な効果音を再生します。
制限時間
毎フレーム残り時間を更新し、0秒を過ぎると結果画面を表示してゲーム処理を停止します。
リトライ
結果画面のボタンからSameGamePuzzleSceneを再読み込みし、最初からやり直せます。
Code Structure
データの管理
- bubbles
- 現在フィールドに存在するバブルを管理
- lineBubbles
- ドラッグ中につないでいるバブルを選択順に管理
- LineRenderer
- 選択中のバブル位置を結ぶ線を描画
- SameGamePuzzleSceneDirector
- 入力、生成、削除、補充、スコア、時間、結果画面を管理
Learning
学んだこと・改善したいこと
入力状態の切り分け、ドラッグ中の選択リスト、距離とSpriteによる条件判定、削除後に要素を補充する流れを学びました。 今後は追加削除の重複を避ける選び方、選択を戻す操作、終了時の入力状態などを改善したいと考えています。