前提・実現したいこと
以下のサイトを参考にUnityで2Dのタワーディフェンスゲームを作っています。
https://3dunity.org/game-create-lesson/tower-defense-game/player-ui-arrow-level-up/
発生している問題・エラーメッセージ
クリックしたタイルの座標にすでにタワーがあるかどうかの判別をしたいのですが、最適な判別の仕方がわかりません。
参考サイトではステージを、小さなSpriteを大量に配置して作成し、クリックした位置のSprite
の子要素にタワーを生成することで、子要素の有無でタワーが設置されているかどうかを判別しています。
ですが私はステージ作成の部分をアレンジし、TileMapを使用して作成したところ、上記の方法での判別ができなくなりました。
教えていただきたいのは以下の二つです
1
そもそも参考サイトの通りにして、TileMapを使うべきではないのか。
2
クリックしたタイルの座標にすでにタワーがあるかどうかを判別する方法。
1はTileMapで作成したほうがSpriteを敷き詰めるより効率が良いと思ったのですが、2Dの1画面で完結するようなゲームではあまり気にする必要はないのでしょうか?
2については以下の方法を自分で考えましたが、もっといい方法があると思い質問いたしました。
独学でUnityをしており、基本的な事も欠落している部分があると思いますので、初歩的なことでもいいので教えていただけると助かります。
試したこと
1
マウスクリックした位置からRayを飛ばし、RayCastAllでタワーに衝突したかどうかで判別。
2
TilemapのSpriteで判別する(spriteA=タワーあり,spriteB=タワーなし)
マウスクリックした位置からTilemap.WorldToCellでセルを特定し、tilemap.GetSpriteで Spriteを判別する。
1はRayCastが負荷のかかる処理だと聞いたので他の方法がないかなと思いました。
2はTileMapを置き換える無駄があり、絶対に違うなと思いました。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/03 00:21