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

最初は単純な自機移動から始めて、徐々に敵や弾を追加していくのがコツです。段階的に進めましょう。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
あなたのオリジナルゲーム、今年こそ完成させませんか?
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の核心的な要素です。
自機と敵の弾を適切に管理することで、ゲームが成り立ちます。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
自機移動と敵の生成処理

自機移動と敵の生成処理を解説します。
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座標で生成することで、毎回異なる位置から敵が出現します。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
弾の処理と当たり判定

弾の処理と当たり判定を解説します。
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では、オブジェクトプーリングは必須の技術といえるでしょう。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
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の更新処理を実装する
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
実用的なSTG完成までの5ステップ

- STEP1自機移動の実装(所要1時間)
方向キーやWASDキーで自機を移動させる。
画面外に出ないように制限を設ける。
学べること:入力処理、移動処理、画面境界の設定
成果物:移動できる自機
- STEP2弾の発射処理(所要1時間)
スペースキーで弾を発射する処理を実装する。
弾の移動と画面外での削除処理を実装する。
学べること:オブジェクト生成、移動処理、削除処理
成果物:弾を発射できるシステム
- STEP3敵の生成と移動(所要2時間)
敵を生成し、画面内を移動させる処理を実装する。
敵の移動パターンを実装する。
学べること:敵生成、移動パターン、Coroutine
成果物:敵が出現するシステム
- STEP4当たり判定の実装(所要2時間)
弾と敵・自機の当たり判定を実装する。
ダメージ処理とHP管理を実装する。
学べること:当たり判定、ダメージ処理、HP管理
成果物:当たり判定が動作するシステム
- STEP5UIと最適化(所要2時間)
スコアやライフの表示を追加し、最適化する。
オブジェクトプーリングを実装する。
学べること:UI表示、パフォーマンス最適化、オブジェクトプーリング
成果物:実用的なSTG
合計8時間で、実用的なSTGが完成します。
実装時のチェックリスト
✅ 実装時のチェックリスト
- 自機が移動できるか
- 弾が発射できるか
- 敵が生成されているか
- 当たり判定が正しく動作しているか
- UIが表示されているか
- 画面外に出たオブジェクトが削除されているか
- パフォーマンスに問題がないか
- 操作感が快適か(実際にプレイして確認)
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
まとめ

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時間)
あなたのペースで、少しずつ進めていけば大丈夫です。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる



コメント