![見出し画像](https://assets.st-note.com/production/uploads/images/121879351/rectangle_large_type_2_ebe8d8e33e936334c481ab5e9c828609.png?width=1200)
【Unity C#】キャンディークラッシュ風マッチ3パズルの作り方 #11 タイル削除②
それではこのレクチャーでは
揃ったタイルを削除する関数
を作っていきます
削除可能なタイルを取得する関数
まずは、MatchPuzzleSceneDirectorの一番下に
フィールド全体から削除可能なタイルを返す関数
を追加します
// 全体から削除可能なタイルを返す
List<Vector2Int> GetDeleteTiles()
{
// 削除対象タイル
List<Vector2Int> deleteTiles = new List<Vector2Int>();
// 全体を調べる
foreach (var tile in fieldTiles)
{
// タイルデータなし
if (!tile) continue;
// ここを中心に調べる
Vector2Int index = WorldToIndexPosition(tile.transform.position);
// 左右方向
List<Vector2Int> directions = new List<Vector2Int>()
{
Vector2Int.left,
Vector2Int.right,
};
// 同じ色のタイルを取得
List<Vector2Int> matchTiles = GetMatchTiles(index, directions);
// マッチ数に到達していたら追加
if (matchColorCount <= matchTiles.Count)
{
// かぶりのないリストを作成
AddNewItems(deleteTiles, matchTiles);
}
// 上下方向
directions = new List<Vector2Int>()
{
Vector2Int.up,
Vector2Int.down,
};
// 同じ色のタイルを取得
matchTiles = GetMatchTiles(index, directions);
// マッチ数に到達していなければクリア
if (matchColorCount <= matchTiles.Count)
{
// かぶりのないリストを作成
AddNewItems(deleteTiles, matchTiles);
}
}
return deleteTiles;
}
解説
この関数はタイルの交換の移動や落下が終了した時に使う関数になります。
この記事が参加している募集
この記事が気に入ったらチップで応援してみませんか?