ヴァンサバ風ゲームの作り方|自動で戦うサバイバーゲームをUnityで最後まで作る全11回

お菓子工房に押し寄せるコゲクッキーを、スライムちゃんの調理器具が自動で倒していく様子

移動するだけで武器が勝手に攻撃してくれて、押し寄せる敵をなぎ倒していく。そんな「ヴァンパイアサバイバーズ」のようなゲーム、一度は作ってみたいと思ったことはありませんか?実はこのジャンル、操作は移動だけなのに、プレイヤーの移動・敵の出現・当たり判定・UI・データ管理と、アクションゲームの基本がぎゅっと詰まっています。このシリーズでは、ヴァンサバ風のサバイバーゲームを、最初から最後まで一緒に作っていきたいと思います!

どんなゲームを作るの?

舞台はスライムちゃんのお菓子工房。焼きすぎたり、しけったりして失敗したお菓子たちが、工房に押し寄せてきます。

  • プレイヤー(スライムちゃん)は移動するだけ。調理器具が自動で一番近い敵を攻撃する
  • 工房の外から、こげたお菓子がどんどん出てきて追いかけてくる
  • 倒した敵が落とす金平糖の粒を集めると、レベルアップ
  • レベルアップすると3つの強化から1つを選べる(新しい調理器具・攻撃力アップ・移動速度アップなど)
  • 時間がたつほど敵が増えて強くなる。10分生き残ればクリア
  • 最後はWindowsのゲーム(.exe)にして、友達に配れるところまで作る

使う調理器具

道具攻撃の仕方出てくる回
計量スプーン一番近い敵に投げる#4
ホイッパー(泡立て器)自分の周りをクルクル回る#5
ストレーナー(粉ふるい)足元に粉をふるい落として、まわりの敵を攻撃する#7

出てくる敵

敵特徴出てくる時間
コゲクッキー遅くて弱いけど、数が多い0分〜
ドロドロチョコ速い3分〜
カチカチあめ硬い6分〜

このシリーズの対象

  • Unityスタートガイドをひととおり読んだ人
  • 特に、入力・当たり判定・プレハブ・UIの記事を読んだ人(下の「学べること」にリンクがあります)
  • 動きのあるアクションゲームを作ってみたい人

スタートガイドで説明したことは、各回で「〇-〇の記事」とリンクを貼って、細かい説明は省きます。

スライム

自分が主役なのはうれしいんですが、相手が焦げたクッキーって・・・

フェアリー

失敗したお菓子を作り直してあげるんだよ!何百個出てきても重くならない作り方を#3で覚えるからね

プロジェクトの環境

  • Unityのバージョン:Unity 6.3 LTS
  • テンプレート:Universal 2D(URP)
  • 入力:Input System(キーボードのWASD・矢印キー、ゲームパッドのスティック)
  • パッケージ:Cinemachine(#1で追加します)

このシリーズで学べること

スタートガイドの知識をゲームで使う

このシリーズで新しく覚えること

  • Cinemachine:プレイヤーを追いかけるカメラ
  • Tilemap:お菓子工房の床を作る
  • 8方向のアニメーション:進む向きによって絵を切り替える
  • ObjectPool:たくさんの敵や武器を、重くならずに出したり消したりする(ObjectPoolの記事)
  • 一番近い敵を探す処理:自動で狙う武器の仕組み
  • ScriptableObject:武器や敵のデータを、スクリプトと分けて管理する
  • レベルアップの3択UIと、選んでいる間ゲームを止める方法
  • ウェーブの管理:時間で敵の数と強さを変えて、難易度を調整する

目次

#1 プロジェクトの準備とスライムちゃんを動かそう

  • Input Systemで、WASDやスティックでスライムちゃんを動かす
  • 8方向の歩くアニメーションを、進む向きで切り替える
  • Cinemachineで、カメラがスライムちゃんを追いかけるようにする

#2 お菓子工房の床を作ろう(Tilemap)

  • Tilemapで、作業台とクッキングシートの床を作る
  • 工房の外に出られないように、見えない壁で囲む

#3 こげたクッキーを出して追いかけさせよう(ObjectPool)

  • 画面の外から、一定間隔で敵が出てくる
  • 敵がスライムちゃんに向かって歩いてくる
  • ObjectPoolで、何百体出しても重くならないようにする
画面の外から出てきた大量のコゲクッキーが、スライムちゃんに集まってくる様子

#4 一番近い敵に計量スプーンを投げよう

  • 一定間隔で計量スプーンを投げる
  • 一番近い敵を探して、その方向に飛ばす
  • 当たったら敵にダメージを与え、倒したら消す

#5 武器のデータをScriptableObjectで管理する

  • 攻撃力・発射間隔・飛ぶ速さを、武器のデータとして作る
  • データを差し替えるだけで、違う武器になるようにする
  • 2つ目の武器「ホイッパー」(自分の周りを回る武器)を追加する

#6 金平糖を集めてレベルアップしよう

  • 倒した敵から金平糖の粒を落とす
  • 近づくと金平糖が吸い寄せられて、経験値が入る
  • 経験値がたまったらレベルアップ

#7 レベルアップの3択の強化を作ろう

  • レベルアップしたら、ゲームを止めて3つの強化を表示する
  • 選んだ強化を反映する(ストレーナーの追加・攻撃力アップ・移動速度アップ)
  • 選び終わったらゲームを再開する
画面が暗くなり、3枚の強化カードが横に並んでいる画面

#8 手応えのある演出を足そう

  • 敵を殴ると白く光って、当たった向きに少しのけぞる
  • 倒れるときはしぼんで消える
  • レベルアップを目に留まるようにする

#9 HPゲージ・ダメージ演出・ゲームオーバー

  • 敵に触れるとHPが減り、HPゲージに反映される
  • ダメージを受けたときに、スライムちゃんを点滅させる
  • HPが0になったらゲームオーバー

#10 時間で強くなる敵のウェーブを作ろう

  • 経過時間を表示する
  • 時間によって、出てくる敵の数と種類を変える
  • 10分生き残ればクリア
スライム

後半は画面が焦げたお菓子だらけになりますね・・・

フェアリー

それがこのジャンルの気持ちいいところ!でも強すぎると遊べないから、数字の調整の仕方も一緒に考えようね

#11 タイトルとリザルトを付けて、Windowsで遊べるようにしよう

  • タイトル画面とリザルト画面(生き残った時間・倒した数)を作る
  • 効果音とBGMを付ける
  • Windowsのゲーム(.exe)にビルドして、友達に配れる形にする

準備するもの

  • Unity 6.3 LTS がインストールされたPC(1-1 Unityのインストール)
  • コードエディタ:VS Code(1-3 VS Codeの導入)
  • シリーズで使う素材:SurvivorsLikeAssets.zip
    • スライムちゃん・敵・調理器具・床のタイル・強化アイコン・効果音とBGM・日本語フォントが入っています
    • 自由に使ってOKです(素材そのものの再配布はご遠慮ください)
  • あると便利:ゲームパッド(なくてもキーボードで遊べます)

ほかのシリーズ