teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

参考ページを追加

2021/06/01 22:42

投稿

Bongo
Bongo

スコア10816

answer CHANGED
@@ -8,5 +8,5 @@
8
8
  [WorldToCell](https://docs.unity3d.com/ja/current/ScriptReference/GridLayout.WorldToCell.html)を使うというのも適切だと思います。たとえばタイルマップを下層の地形用と上層のタワー用の2枚重ねにして、下層の地形マップについてタイルの種類を判定すればタワーを設置できる地形かどうか判断できそうですし、上層のタワーマップについてタイルの有無を判定すればタワーが設置されているかどうかを判断できるでしょう(ちなみに「[【Unity】TilemapでRayが衝突した場所のTileを消す - YAMADA TAISHI’s diary](https://orotiyamatano.hatenablog.com/entry/2019/11/07/TilemapRayDelete)」の例のように、[SetTile](https://docs.unity3d.com/ja/current/ScriptReference/Tilemaps.Tilemap.SetTile.html)で`null`をセットすればタイルを撤去できるはずですので、タワーありとタワーなしの2種類のタイルを用意するよりも、タイルの設置・撤去で状態を切り替える方が手軽そうな気がします)。
9
9
 
10
10
  タイルマップとスプライトを併用しても面白そうですね。
11
- たとえばご提示の「[プレイヤーの管理処理の作成 HPやゴールドの表示・弓矢のレベルアップ処理の作成 | Unity入門の森 ゲームの作り方](https://3dunity.org/game-create-lesson/tower-defense-game/player-ui-arrow-level-up/)」では弓が敵の方を向いて矢を発射しています。[CellToWorld](https://docs.unity3d.com/ja/current/ScriptReference/GridLayout.CellToWorld.html)でタイル座標からワールド座標を算出してスプライトを設置することにすれば、そのスプライトを回転させることでこういった表現を行えるんじゃないでしょうか。
11
+ たとえばご提示の「[プレイヤーの管理処理の作成 HPやゴールドの表示・弓矢のレベルアップ処理の作成 | Unity入門の森 ゲームの作り方](https://3dunity.org/game-create-lesson/tower-defense-game/player-ui-arrow-level-up/)」では弓が敵の方を向いて矢を発射しています。[CellToWorld](https://docs.unity3d.com/ja/current/ScriptReference/GridLayout.CellToWorld.html)や[GetCellCenterWorld](https://docs.unity3d.com/ja/current/ScriptReference/Tilemaps.Tilemap.GetCellCenterWorld.html)でタイル座標からワールド座標を算出してスプライトを設置することにすれば、そのスプライトを回転させることでこういった表現を行えるんじゃないでしょうか。
12
12
  「[Tilemap - How to Rotate Tiles? - Unity Forum](https://forum.unity.com/threads/tilemap-how-to-rotate-tiles.503119/)」の方法でタイル自体を回転させて表現する手もあるかもしれませんが、やはり回したり動かしたりするのはスプライトの方が手軽なんじゃないかと思います。