STGを作りたい。
でも、「どんな要素が必要なのか分からない」そんな風に感じていませんか。
実は、STG制作には、押さえるべき基本的な実装要素があります。
これらの要素を理解すれば、初心者でもSTGを作ることができるでしょう。
この記事では、STG制作の基本をまとめ、初心者が押さえるべき実装要素を詳しく解説します。
✨ この記事でわかること
- STG制作に必要な基本要素(所要30分)
- 自機移動と敵の生成処理(所要2時間)
- 弾の処理と当たり判定(所要2時間)
- STG制作でよくある失敗5選と解決方法
- 実用的なSTG完成までの5ステップ(合計8時間)

最初は単純な自機移動から始めて、徐々に敵や弾を追加していくのがコツです。段階的に進めましょう。
\あなたにピッタリのFPS・TPSゲーム制作講座を見つけよう!/
おすすめ第1位
Unity FPSゲームの
作り方講座
FPS・スマホ・VRの3プラットフォームに同時対応。1本作るだけで3つのゲームが完成する圧倒的な開発体験が魅力の講座です。
初心者にもおすすめ
Unity ノンフィールドRPG
+スレスパ風JRPG講座
Unity6対応・スマホ化対応の三拍子。トレンドのデッキ構築型システムを最速で実装できます。初心者が最初に学ぶ一本として最適です。
会話システムも学べる
Unity ノベルゲームの
作り方講座
かまいたちの夜・ダンガンロンパ風のノベルゲームをゼロから開発。会話システム・シナリオ分岐・セーブ機能まで、他ジャンルにも応用できるUIスキルが身につきます。
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
STG制作とは?基礎知識から理解する

STG制作とは、シューティングゲームを開発することです。
適切な要素を実装すれば、初心者でもSTGを作ることができるでしょう。
STG制作には、自機移動、敵の生成、弾の処理、当たり判定が重要になります。
これらの要素を組み合わせることで、STGの基本システムが完成します。
段階的に実装していくことで、完成度の高いSTGを作ることができるでしょう。
STG(Shooting Game)は、プレイヤーが自機を操作し、敵を撃ち倒していくゲームジャンルです。
2Dの横スクロールや縦スクロール形式が一般的で、シンプルながら奥深いゲーム性が特徴です。
Unityを使えば、初心者でも比較的簡単にSTGを作ることができます。
STG制作に必要な要素
✅ STG制作に必要な要素
- 自機移動:プレイヤーの移動処理(所要時間:1時間)
- 敵の生成:敵を生成する処理(所要時間:1時間)
- 弾の処理:自機と敵の弾の処理(所要時間:2時間)
- 当たり判定:弾と敵・自機の当たり判定(所要時間:2時間)
- UI表示:スコアやライフの表示(所要時間:2時間)
自機移動は、STGの基本となる要素です。
プレイヤーが自機を自由に操作できるようにするために、入力処理と移動処理を実装する必要があります。
敵の生成は、ゲーム性を左右する重要な要素。
適切なタイミングで敵を生成することで、プレイヤーに緊張感を与えられます。
弾の処理は、STGの核心的な要素です。
自機と敵の弾を適切に管理することで、ゲームが成り立ちます。
自機移動と敵の生成処理

自機移動と敵の生成処理を解説します。
STGの基本的な要素です。
自機移動の実装
自機移動は、方向キーやWASDキーで操作します。
transform.Translate()やRigidbody2Dを使うことで、移動処理を実装できます。
画面外に出ないように制限を設けることで、自然な操作感を実現できるでしょう。
移動速度は、5.0〜8.0が一般的に適切な範囲です。
速度が速すぎると操作が難しくなり、遅すぎると動きが鈍く感じられます。
実際にプレイしながら調整することが重要です。
以下は、基本的な自機移動の実装例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using UnityEngine; public class PlayerController : MonoBehaviour { public float moveSpeed = 6.0f; public float boundaryLeft = -8.5f; public float boundaryRight = 8.5f; public float boundaryTop = 4.5f; public float boundaryBottom = -4.5f; void Update() { // 入力の取得 float horizontal = Input.GetAxis("Horizontal"); float vertical = Input.GetAxis("Vertical"); // 移動処理 Vector3 move = new Vector3(horizontal, vertical, 0) * moveSpeed * Time.deltaTime; transform.Translate(move); // 画面外に出ないように制限 float x = Mathf.Clamp(transform.position.x, boundaryLeft, boundaryRight); float y = Mathf.Clamp(transform.position.y, boundaryBottom, boundaryTop); transform.position = new Vector3(x, y, transform.position.z); } } |
このコードにより、基本的な自機移動が実装できます。
Mathf.Clamp()を使うことで、画面外に出ないように制限できます。
画面サイズに応じて、boundaryLeftやboundaryRightの値を調整することが重要です。
敵の生成処理
敵の生成は、一定時間ごとや、画面の外から生成するのが一般的。
Instantiate()を使って敵を生成し、適切な位置に配置します。
生成された敵をリストで管理することで、効率的に処理できるでしょう。
敵の生成間隔は、1.0〜3.0秒が適切な範囲です。
間隔が短すぎると難しくなり、長すぎると単調になってしまいます。
ゲームの進行に応じて、生成間隔を調整することも重要です。
以下は、基本的な敵の生成処理の実装例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
using UnityEngine; using System.Collections; public class EnemySpawner : MonoBehaviour { public GameObject enemyPrefab; public float spawnInterval = 2.0f; public float spawnX = 10.0f; void Start() { StartCoroutine(SpawnEnemies()); } IEnumerator SpawnEnemies() { while (true) { // ランダムなY座標で敵を生成 float randomY = Random.Range(-4.0f, 4.0f); Vector3 spawnPosition = new Vector3(spawnX, randomY, 0); Instantiate(enemyPrefab, spawnPosition, Quaternion.identity); yield return new WaitForSeconds(spawnInterval); } } } |
このコードにより、一定間隔で敵を生成できます。
Coroutineを使うことで、生成処理を非同期で実行できます。
ランダムなY座標で生成することで、毎回異なる位置から敵が出現します。
弾の処理と当たり判定

弾の処理と当たり判定を解説します。
STGの核心的な要素です。
弾の生成と移動
弾は、発射ボタンが押されたときに生成されます。
生成された弾は、一定の速度で移動します。
画面外に出た弾は、削除することで処理負荷を軽減できるでしょう。
弾の速度は、8.0〜15.0が適切な範囲。
速度が速すぎると当たりにくくなり、遅すぎると避けにくくなります。
オブジェクトプーリングを使うことで、パフォーマンスを向上させられます。
以下は、基本的な弾の処理の実装例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
using UnityEngine; public class Bullet : MonoBehaviour { public float speed = 10.0f; public float lifetime = 5.0f; void Start() { // 一定時間後に自動削除 Destroy(gameObject, lifetime); } void Update() { // 上方向に移動 transform.Translate(Vector3.up * speed * Time.deltaTime); // 画面外に出たら削除 if (transform.position.y > 6.0f) { Destroy(gameObject); } } } |
このコードにより、基本的な弾の処理が実装できます。
Destroy()を使うことで、一定時間後に自動削除できます。
画面外に出た弾も削除することで、メモリリークを防げます。
当たり判定の実装
当たり判定は、Collider2DとOnTriggerEnter2D()を使って実装できます。
自機の弾が敵に当たったら、敵にダメージを与えます。
敵の弾が自機に当たったら、自機にダメージを与えるのが基本です。
Collider2DのIsTriggerを有効にすることで、物理演算を使わない当たり判定ができます。
これは、STGのような高速な当たり判定に適しています。
以下は、基本的な当たり判定の実装例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using UnityEngine; public class Enemy : MonoBehaviour { public int hp = 3; void OnTriggerEnter2D(Collider2D other) { if (other.CompareTag("PlayerBullet")) { // ダメージ処理 hp--; Destroy(other.gameObject); // 弾を削除 if (hp <= 0) { // 敵を倒す処理 Destroy(gameObject); } } } } |
このコードにより、基本的な当たり判定が実装できます。
CompareTag()を使うことで、特定のタグを持つオブジェクトとの衝突を検出できます。
HPを管理することで、複数の弾が当たっても敵を倒せます。
オブジェクトプーリングの活用
オブジェクトプーリングを使うことで、弾の生成と削除を効率化できます。
弾を事前に生成しておき、必要なときに有効化し、不要になったら無効化する方式です。
これにより、Instantiate()やDestroy()の呼び出しを減らせ、パフォーマンスが向上します。
弾が多いSTGでは、オブジェクトプーリングは必須の技術といえるでしょう。
STG制作でよくある失敗5選と解決方法

STG制作で、初心者が陥りやすい失敗があります。
ここでは、5つのよくある失敗と解決方法を紹介します。
失敗1:処理が重くなる
❌ よくある失敗
- 弾や敵を削除せずに増やし続ける
- 毎フレーム全てのオブジェクトをチェックする
- 不必要な物理演算を実行している
- オブジェクトプーリングを使っていない
処理が重くなると、ゲームがカクついてしまいます。
適切な最適化を行うことが重要。
✅ 正しいアプローチ
- 画面外に出た弾や敵は削除する
- 必要な範囲のオブジェクトのみチェックする
- 物理演算を使わない場合は無効化する
- オブジェクトプーリングを使って効率化する
失敗2:当たり判定が正しく動作しない
当たり判定が正しく動作しない場合、Collider2Dの設定を確認することが重要です。
IsTriggerが有効になっているか、適切なタグが設定されているかを確認しましょう。
解決方法:
- Collider2Dが正しく設定されているか確認する
- IsTriggerが正しく設定されているか確認する
- OnTriggerEnter2D()が正しく実装されているか確認する
- タグが適切に設定されているか確認する
失敗3:自機が画面外に出てしまう
自機が画面外に出てしまう場合、画面の境界を設定することが重要です。
Mathf.Clamp()を使うことで、簡単に制限できます。
⚠️ 解決方法
- 画面の境界値を計算する
- Mathf.Clamp()を使って位置を制限する
- Camera.main.ScreenToWorldPoint()を使って画面サイズを取得する
- 実際にプレイして確認する
失敗4:敵の生成タイミングが適切でない
敵の生成タイミングが適切でないと、ゲームが単調になったり難しすぎたりします。
ゲームの進行に応じて、生成間隔を調整することが重要です。
解決方法:
- ゲームの進行に応じて生成間隔を調整する
- 複数のパターンを用意する
- 実際にプレイして調整する
- 難易度に応じて生成数を変更する
失敗5:UI表示が実装されていない
UI表示が実装されていないと、プレイヤーがゲームの状態を把握できません。
スコアやライフの表示を実装することが重要です。
⚠️ 解決方法
- Canvasを使ってUIを実装する
- Textコンポーネントを使ってスコアを表示する
- Imageコンポーネントを使ってライフを表示する
- UIの更新処理を実装する
実用的なSTG完成までの5ステップ

- STEP1自機移動の実装(所要1時間)
方向キーやWASDキーで自機を移動させる。
画面外に出ないように制限を設ける。
学べること:入力処理、移動処理、画面境界の設定
成果物:移動できる自機
- STEP2弾の発射処理(所要1時間)
スペースキーで弾を発射する処理を実装する。
弾の移動と画面外での削除処理を実装する。
学べること:オブジェクト生成、移動処理、削除処理
成果物:弾を発射できるシステム
- STEP3敵の生成と移動(所要2時間)
敵を生成し、画面内を移動させる処理を実装する。
敵の移動パターンを実装する。
学べること:敵生成、移動パターン、Coroutine
成果物:敵が出現するシステム
- STEP4当たり判定の実装(所要2時間)
弾と敵・自機の当たり判定を実装する。
ダメージ処理とHP管理を実装する。
学べること:当たり判定、ダメージ処理、HP管理
成果物:当たり判定が動作するシステム
- STEP5UIと最適化(所要2時間)
スコアやライフの表示を追加し、最適化する。
オブジェクトプーリングを実装する。
学べること:UI表示、パフォーマンス最適化、オブジェクトプーリング
成果物:実用的なSTG
合計8時間で、実用的なSTGが完成します。
実装時のチェックリスト
✅ 実装時のチェックリスト
- 自機が移動できるか
- 弾が発射できるか
- 敵が生成されているか
- 当たり判定が正しく動作しているか
- UIが表示されているか
- 画面外に出たオブジェクトが削除されているか
- パフォーマンスに問題がないか
- 操作感が快適か(実際にプレイして確認)
FPS・TPSゲームを作りたいなら!Unity入門の森の講座で本格3Dゲーム開発に挑戦しよう
Unity入門の森には、FPS・VR・スマホ対応など幅広いプラットフォームに対応した3Dゲーム制作講座が揃っています。作りたいゲームや目標スキルに合わせて選んでみてください。
Unity FPSゲームの作り方講座【全17回!FPS・VR・スマホの3プラットフォームを同時に作れる!】

- APEX・バトルフィールド風のFPSゲームをゼロから開発
- FPS・スマホ・VRの3プラットフォームに同時対応
- 書籍では学べないVR対応弓矢FPSのオリジナリティ高い開発手法
- 地上・空中の敵AIや弓矢チャージショットなど本格システムを実装
- 初心者でも安心の丁寧な解説と完成プロジェクトファイル付き
Unity FPSゲームの作り方講座は、APEX・バトルフィールド・Call of Dutyのような一人称視点のFPSゲームを作るための講座です。
弓矢を使ったオリジナリティの高いFPSをベースに、PC・スマホ・VRの3プラットフォームに同時対応した開発手法を全17回で習得できます。VR空間で弓を構えて矢を射るという高度なアクションの実装まで、書籍では学べないスキルが身につきます。
1本の講座でFPS・スマホ・VRを同時に作れるのはこの講座ならでは。3Dゲーム開発の幅を一気に広げたい方にもおすすめです。
FPS・スマホ・VRの3プラットフォームを同時に完成させる
1本作るだけで3つのゲームが完成する圧倒的な開発体験を手に入れよう
→ Unity FPSゲームの作り方講座を見てみる
書籍では学べないVR対応FPSで、一歩先の3Dゲーム開発スキルを今すぐ!
Unity ノンフィールドRPG+スレスパ風JRPG講座【Unity6対応!デッキ構築×JRPGをスマホ向けに作れる!】

- Unity6対応・スマホ化対応で最新環境のゲーム開発が学べる
- Slay the Spire風のデッキ構築システム×JRPGの組み合わせを実装
- 初心者でも取り組みやすい丁寧な解説構成
- ノンフィールドRPGとデッキ構築JRPGの2つを合わせて学ぶのがおすすめ
Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座は、今もっともトレンドのデッキ構築型ゲームシステムをJRPGと組み合わせて実装する方法を学べる講座です。
Unity6対応・スマホ化対応の最新カリキュラムで、デッキ構築の核となるシステムをしっかり習得できます。FPSで培った3D開発の知識と組み合わせることで、ゲーム開発の幅がさらに広がります。
「Slay the Spireみたいなゲームを自分でも作ってみたい!」という人の最初の一歩として最適な講座です。
Unity6対応・スマホ化対応の最新カリキュラム
トレンドのデッキ構築×JRPGを最速で実装しよう
→ Slay the Spire風デッキ構築JRPG講座を見てみる
スマホ対応の最新環境で、ゲーム開発の第一歩を踏み出そう!
Unity ノベルゲームの作り方講座【全14回!会話システムからシナリオ分岐まで他ジャンルにも応用できるUIスキルが身につく!】

- かまいたちの夜・ダンガンロンパ・逆転裁判風のゲームをゼロから開発
- テキスト文字送り・選択肢・シナリオ分岐・セーブまで完全実装
- Googleスプレッドシートを使ったシナリオ管理システムを習得
- 会話システム・UI遷移は他ジャンルのゲームにも応用可能
- 初心者から上級者まで対応の丁寧な解説とソースコード付き
Unity ノベルゲームの作り方講座は、かまいたちの夜・ひぐらしのなく頃に・ダンガンロンパ・逆転裁判のようなテキスト主体のゲームを作るための講座です。
会話システム・シナリオ分岐・セーブ機能はもちろん、UniTaskを用いた非同期処理やGoogleスプレッドシートを使ったシナリオ管理など、中・上級者のスキルアップにも直結する実践的な開発テクニックが身につきます。
ノベルゲームに限らず、会話システムやUI遷移はあらゆるジャンルに使える汎用スキル。FPS開発と組み合わせてゲーム開発の引き出しをさらに広げたい人におすすめです。
会話システム・シナリオ分岐・セーブまで完全実装
ノベルゲームで身につくUIスキルは全ジャンルの武器になる
→ Unity ノベルゲームの作り方講座を見てみる
汎用性の高いUIスキルを今すぐ習得して開発の幅を広げよう!
まとめ

STG制作には、押さえるべき基本的な実装要素があります。
これらの要素を理解し、段階的に実装していけば、初心者でもSTGを作ることができるでしょう。
✅ 記事の要点まとめ
- STG制作の基本要素:自機移動、敵生成、弾処理、当たり判定、UI表示
- 自機移動:方向キーでの移動処理、画面境界の設定(速度5.0〜8.0)
- 敵の生成:一定間隔での生成処理(間隔1.0〜3.0秒)
- 弾の処理:弾の生成と移動(速度8.0〜15.0)、画面外での削除
- 当たり判定:Collider2Dを使った判定、HP管理
- オブジェクトプーリング:パフォーマンス向上のための技術
- よくある失敗5選:処理が重い、当たり判定の問題、画面外への移動、敵生成のタイミング、UI未実装
- 実用的なSTG:5ステップで完成(合計8時間)
今日から始める3ステップ:
- STEP1:自機移動の実装(所要1時間)
- STEP2:弾の発射処理(所要1時間)
- STEP3:敵の生成と移動(所要2時間)
あなたのペースで、少しずつ進めていけば大丈夫です。
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。





コメント