スキル0の初心者がUnityでタワーディフェンスを作るまでの日記 ♯3

Geminiに相談しながらUnityを使って2Dタワーディフェンスゲームの制作を開始しました。
「敵が歩き、砲台が迎え撃つ」というシンプルながら奥が深いこのジャンル。今回は、アセットの導入からゲームの基本サイクルが完成するまでをやりました。

使用したアセットと環境設定
まずは見た目から。Asset Storeで以下の素材をお借りしました。
マップ素材: Pixel Art Top Down – Basic
ゲーム画面: 1920×1080 (16:9) に固定。左右の空きスペースをUIエリアとして活用する予定です。
Pixels Per Unit (PPU): 素材に合わせて「64」に設定。

実装した主要機能
① ウェイポイントによる敵の移動
「Waypoints」という親オブジェクトの中に「Point1, 2…」と子を並べ、敵がそれを順番に追いかける仕組みを作りました。
苦労した点: 2DなのにZ座標がズレていて、敵が目的地を通り過ぎるトラブルが発生。「Zはすべて0にする」という鉄則を学びました。
② 自動スポーンとウェーブ制
一定時間ごとに敵を生成する「EnemySpawner」を実装。
ウェーブが進むごとに敵の数が増え、さらに Enemy.cs でHPも自動強化されるようにしたので、放置できない緊張感が生まれました。
③ タワーの建築と攻撃システム
「Node(土台)」をクリックしてタワーを建てる仕組みです。
建築制限: お金(所持金)の概念を導入。100円払って建て、敵を倒して50円稼ぐ、というサイクルが完成。
攻撃: 索敵範囲内に敵が入ると、タワーが向きを変えて「Bullet(弾)」を連射します。
④ UI(ユーザーインターフェース)の構築
TextMesh Proを使い、画面上部に「所持金」「ライフ」「ウェーブ数」を表示。
日本語の壁: 漢字が「□」になる豆腐現象に遭遇。今回は英語表記(MONEY, LIVES)にすることでスッキリ解決しました。

発生したエラーと解決策(自分用メモ)
NullReferenceException: スポナーがルート(Waypoints)を見失った際に出現。インスペクターでの紐付け忘れが原因でした。
CS1513/CS1022 (カッコの過不足): スクリプトを改造しているうちに } がズレてエラーに。コードの構造を意識する大切さを痛感。

次のステップ
現在はタイルマップ(Tilemap)を使って新ステージを制作中。
「道の上にはタワーを置けない」というルールを徹底し、より戦略性の高いマップを目指します。

お察しの通り上の文はGeminiに要約してもらいました。現在作成したマップはこんな感じです。

低FPSなので飛び飛びですがマップと敵ができました。次は3Dで一から作りたいと思います。今やっているタワーディフェンスは3Dで作られているのが多いのでそちらの方が完成形が想像しやすいかなという考えです。正直まだよくわからず、作業中の楽しさも見いだせていませんがある程度理解できる程度にはなりたいと思います。では👋

コメント

タイトルとURLをコピーしました