SRPGの移動範囲的なアレを作る
これを作ります
TileTest.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Tilemaps; public class TileTest : MonoBehaviour { public Tilemap tilemap; public TileBase possibleTile; public Grid grid; public Camera camera; void ChackMoveRange(Vector3Int unitPos, int maxAmount) { SearchPossible(unitPos, maxAmount); } void SearchPossible(Vector3Int pos, int remainAmount) { if(remainAmount == 0) return; tilemap.SetTile(pos, possibleTile); remainAmount--; // 移動力を下げる // 再帰的に4方向を確認 SearchPossible(pos + Vector3Int.up, remainAmount); SearchPossible(pos + Vector3Int.right, remainAmount); SearchPossible(pos + Vector3Int.down, remainAmount); SearchPossible(pos + Vector3Int.left, remainAmount); } void Update() { if(Input.GetMouseButtonDown(0)) { Vector3 clickPos = Input.mousePosition; Vector3Int gridPos = grid.WorldToCell(camera.ScreenToWorldPoint(clickPos)); ChackMoveRange(gridPos, 3); } else if(Input.GetMouseButtonUp(0)) { tilemap.ClearAllTiles(); // タイルを全て外す } } }
GroundTilemapの上からPossibleTilemapで範囲だけ青の透明タイルで塗っています。
今回はユニットなど作っていないので移動力3として想定しています。そのうちタイルごとに必要移動力を変えたりしたいですね。