Sliding Puzzle / Unity Project

SlidePuzzle

Learning Project

15枚のピースと1つの空きマスで構成した4×4のスライドパズルです。 空きマスとの位置関係、解ける配置を保つシャッフル、全ピースの完成判定を学ぶために制作しました。

Overview

プロジェクト概要

Unity 6とC#を使用した学習プロジェクトです。 クリックまたはタップしたピースが空きマスに隣接している場合だけ位置を交換し、すべてのピースが開始時の正解位置へ戻ったかを確認します。

Status
Learning Project
Engine
Unity 6(6000.2.13f1)
Language
C#
Input
マウス / タッチ / ペン(Input System)

Implementation

実装した主な機能

正解位置の保存

ゲーム開始時に16個の要素それぞれの位置をリストへ保存し、後のクリア判定に使用します。

移動可能なシャッフル

空きマスに隣接しているピースだけを候補にし、その中からランダムに選んで位置を交換します。

ポインター入力

Input Systemから押下と画面座標を取得し、ワールド座標へ変換して2Dコライダーを調べます。

隣接判定

選択したピースと空きマスの距離を確認し、上下左右に隣接している場合だけ移動可能と判定します。

ピースの移動

選択したピースと空きマスの座標を一時変数を使って交換し、空き位置を更新します。

クリア判定

操作後に全ピースの現在位置と保存した正解位置を比較し、すべて一致した場合にクリアと判定します。

リトライ

クリア時にボタンを表示し、SlidePuzzleSceneを再読み込みしてもう一度開始できます。

Code Structure

処理の分け方

pieces
空きマスを含む16個の要素を管理し、先頭要素を空きマスとして使用
startPositions
各要素の正解位置をpiecesと同じ順番で保持
GetEmptyPiece
選択したピースが空きマスと隣接しているかを判定
SwapPiece
2つの要素が存在することを確認して位置を交換

Learning

学んだこと・改善したいこと

リストの順番と座標を対応させる方法、空きマスとの隣接判定、解ける移動だけを使ったシャッフル、全要素の一致判定を学びました。 今後はシャッフル回数と偏りの調整、クリア画面、経過時間、効果音などを追加したいと考えています。