はじめに
こんにちは!
今回はUnityを使って、「プレイヤーの前にオブジェクトをポンっと出すしくみ」を作ってみましょう!
どういうことかというと、たとえばキューブ(Cube)を十字キーで動かして、スペースキーを押すとその前にボール(Sphere)が現れる、という仕組みです。ゲームでよくある「弾を出す」「アイテムを置く」といった動きの基本になります。
このチュートリアルでは、次のことが学べます:
- ゲームオブジェクトの親子関係の作り方
- 前方にオブジェクトを出す方法
- スクリプトで動きをつける方法(キー操作&オブジェクト生成)
- プレハブ(Prefab)を使った効率のいいオブジェクト管理
Unity初心者の方でも、順番に進めていけばちゃんとできるように説明するので、安心して進めていってくださいね!
さあ、さっそくはじめていきましょう!
ステップ①:基本オブジェクトを配置しよう
まずは、ゲームの舞台となる「地面」と、操作する「キューブ」をシーンに配置していきます!
🟫 Plane(地面)を作ろう!
Unityのヒエラルキー(Hierarchy)ウィンドウを右クリックして、
「3D Object」→「Plane」を選びましょう。

これで、広い地面がシーンに現れます。特に調整はしなくてOKです!
🟦 Cube(プレイヤーの動かすオブジェクト)を作ろう!
次に、もう一度ヒエラルキーを右クリックして、
「3D Object」→「Cube」を選びます。

シーンの中央(0, 0.5, 0)のあたりにCubeが出てきたら、うまくいってます!
🧲 Cubeに「Rigidbody(リジッドボディ)」を追加しよう
Cubeに物理的な動きを持たせるために、「Rigidbody」というコンポーネントを追加します。
Cubeを選んだ状態で、インスペクター(右側のウィンドウ)を見てください。
下の方にある「Add Component」ボタンをクリックして、「Rigidbody」と入力し、出てきたものを選びます。
これで、Cubeが重力などの物理ルールに従って動くようになります!
✅ ここまでのチェックポイント
- Plane(地面)ができている
- Cube(動かすオブジェクト)が中央にある
- CubeにRigidbodyがついている

ここまでできたら、準備はバッチリです!
次のステップでは、Cubeの前方に空のオブジェクトを配置して、ボールを置く「目印」を作っていきますよ〜!
ステップ②:Cubeの前方に空のオブジェクトを作成しよう
次は、ボールを出すための「目印」を作っていきます。
これは空のGameObjectを使って、Cubeの前方に配置するだけでOK!
ちょっとした仕掛けだけど、プレイヤーの前に正確にボールを出すにはとっても大事なんです!
🔲 空のオブジェクトを作ろう!
ヒエラルキー(Hierarchy)ウィンドウを右クリックして、
「Create Empty」を選びましょう。
すると、何も見えない空のオブジェクトが追加されます。
これは名前をわかりやすくするために、「BallPos」とかにしておくといいですよ!
📌 BallPosをCubeの前に配置しよう
次に、「BallPos」をCubeの少し前に移動させます。
例えば、Cubeの位置が(0, 0.5, 0)なら、BallPosは(0, 0.5, 1)くらいがちょうどいいです。
インスペクターでTransformのPositionを以下のように設定してみてください:
X: 0
Y: 0.5
Z: 1
🔗 親子関係を作ろう!
ここがちょっと大事なポイント!
BallPosを、Cubeの中にドラッグ&ドロップしてみましょう。
すると、BallPosがCubeの子オブジェクトになります。
これで、Cubeが動いたり回転したときに、BallPosも一緒に動いてくれるようになります!
👀 シーンビューを確認してみよう
シーンビューで見てみると、Cubeの少し前に「BallPos」があるのがわかるはずです。
空のオブジェクトは見えないので、インスペクターの「Add Component」から「Sphere」など一時的に追加して位置を確認してもOKです。

ここまでで、「前方にボールを出す位置」がバッチリ決まりました!
✅ ここまでのチェックポイント
- 「BallPos」オブジェクトが作られている
- Cubeの前方に配置されている
- Cubeの子オブジェクトになっている

これで、次のステップでは「Sphere(ボール)を作ってプレハブ化」して、実際に出せるようにしていきます!お楽しみに!
ステップ③:Sphereオブジェクトを作ってプレハブ化しよう
次はいよいよ、実際に出てくる**ボール(Sphere)**を作っていきます!
このボールは、**プレハブ(Prefab)**という形にしておくことで、何度でも出せるようになりますよ!
⚪ Sphere(ボール)を作ろう!
まずはヒエラルキー(Hierarchy)ウィンドウを右クリックして、
「3D Object」→「Sphere」を選びましょう。
すると、丸いオブジェクトがシーンに現れます。
これが、プレイヤーがスペースキーで出すボールになります!
🧲 SphereにRigidbodyを追加しよう
このボールも、動かしたときに物理的に転がったりするように、
「Rigidbody(リジッドボディ)」を追加しておきましょう。
Sphereを選んで、インスペクターから「Add Component」→「Rigidbody」を追加します。
これで、重力の影響を受けるようになります!
📦 プレハブ化しよう!
さあ、ここが大事なところです!
作ったSphereをプロジェクトウィンドウ(Project)にそのままドラッグ&ドロップしましょう。
すると、青いアイコンのプレハブが作成されます。

このプレハブがあれば、スクリプトから何度でもボールを呼び出して出せるようになります!
🗑 元のSphereを削除しよう
プレハブ化ができたら、ヒエラルキーにある元のSphereはもう不要です。
右クリックして「Delete」しておきましょう。
これで、シーンがすっきりして、あとでスクリプトから必要なときだけ出せるようになります!
✅ ここまでのチェックポイント
- Sphereが作られている
- Rigidbodyが追加されている
- プレハブ化して、Projectビューに保存されている
- シーン上のSphereは削除されている

次のステップでは、スペースキーを押したときにこのプレハブを出すスクリプトを作っていきます!ワクワクしてきましたね!
ステップ④:PutBallスクリプトを作成しよう
次はいよいよ、スペースキーでボールを出す仕組みを作っていきます!
このステップでは、「PutBall」という名前のスクリプトを作成して、
さっき作った空のオブジェクト(BallPos)にアタッチします。
📝 スクリプトを作成しよう!
まずは、プロジェクトウィンドウ(Project)を右クリックして
「Create」→「C# Script」を選びます。
スクリプト名は PutBall にしましょう。
🧩 スクリプトを空のオブジェクトにアタッチ!
次に、作成した PutBall スクリプトを、BallPos オブジェクトにドラッグ&ドロップしてアタッチします。
これでスクリプトがオブジェクトに組み込まれて、スペースキーを押したときに働くようになります!
💻 スクリプトを編集しよう
では、PutBall スクリプトをダブルクリックして、以下のコードを入力してください:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PutBall : MonoBehaviour
{
public GameObject ballPrefab;
void Update ()
{
if(Input.GetKeyDown("space"))
{
Instantiate(ballPrefab, transform.position, Quaternion.identity);
}
}
}
このコードのポイントを簡単に説明すると…
public GameObject ballPrefab;
は、あとでボールのプレハブを設定するための「箱」。Input.GetKeyDown("space")
は、スペースキーが押された瞬間をチェック。Instantiate(...)
で、プレハブから新しいボールをシーンに作り出します!
📌 インスペクターでプレハブを設定しよう
BallPosオブジェクトを選んで、インスペクターを見てみると、
PutBallスクリプトの中に「Ball Prefab」という欄が出ているはずです!
ここに、先ほどプレハブ化したSphereをドラッグ&ドロップしましょう。

これで、スクリプトが「このプレハブを使ってね!」と認識できるようになります。
✅ ここまでのチェックポイント
- PutBall.cs スクリプトを作成・編集した
- スクリプトを BallPos オブジェクトにアタッチした
- Ball Prefab に Sphere のプレハブを割り当てた

これで、スペースキーを押したときにボールが出現する仕組みができあがりました!
次のステップでは、いよいよ Cube を操作するためのスクリプトを作っていきましょう!
ステップ⑤:CubeMoveスクリプトを作成してCubeにアタッチしよう
さあ、次はプレイヤーが動かせるCubeを作っていきましょう!
上下左右のキーで移動&回転できるようにするために、専用のスクリプトを書いていきます。
📝 スクリプトを作成しよう!
まずは、プロジェクトウィンドウ(Project)を右クリックして
「Create」→「C# Script」を選びます。
スクリプト名は CubeMove にしましょう。
📦 スクリプトをCubeにアタッチ!
作成した CubeMove スクリプトを、Cube にドラッグ&ドロップしてアタッチします。
これで、スクリプトがCubeとつながって、キー操作ができるようになります!
💻 スクリプトを編集しよう
では、CubeMove スクリプトをダブルクリックして、以下のコードを入力してください:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CubeMove : MonoBehaviour
{
void Update()
{
if(Input.GetKey("up"))
{
transform.position += transform.forward * 0.03f;
}
if(Input.GetKey("down"))
{
transform.position += transform.forward * -0.03f;
}
if(Input.GetKey("right"))
{
transform.Rotate(0, 2, 0);
}
if(Input.GetKey("left"))
{
transform.Rotate(0, -2, 0);
}
}
}
このスクリプトのポイントをざっくり説明すると…
transform.position += transform.forward * 0.03f;
は、前後に移動するコード。transform.Rotate(...)
は、左右に回転するコードです。- 上下左右の矢印キーに対応して、前進・後退・回転ができるようになります!
✅ ここまでのチェックポイント
- CubeMove.cs スクリプトを作成・編集した
- スクリプトを Cube にアタッチした
- キーボードの上下左右キーで移動・回転できるようになった

ここまでできたら、Cube を自由に動かしながら、スペースキーでボールを前に出せるようになります!
次はいよいよ、ゲームプレイの確認です!動作をチェックしてみましょう〜!
ステップ⑥:プレイして動作確認しよう!
さあ、いよいよ動作チェックの時間です!
これまで作ってきた仕組みがちゃんと動くか、実際にプレイして確認してみましょう!
▶ ゲームを再生してみよう
Unityの上にある「▶(再生ボタン)」をクリックして、ゲームをスタートしてみましょう!
すると…
- 上下の矢印キーでCubeが前後に移動
- 左右の矢印キーでCubeが左右に回転
- スペースキーを押すと、前方にSphere(ボール)がポンッ!と出てくる!
…という動きが確認できれば、大成功です🎉!
✅ 正しく動かないときは?
もしうまくいかない場合は、以下のポイントをチェックしてみましょう:
- BallPosオブジェクトがCubeの前方に正しく置かれているか?
- PutBallスクリプトの「Ball Prefab」欄にSphereのプレハブが割り当てられているか?
- スクリプトが正しいオブジェクトにアタッチされているか?
どこか1つでも抜けているとうまく動かないことがありますが、落ち着いて見直せばきっと大丈夫!
🎮 いろいろ試してみよう!
ここまでできたら、ボールを出しまくって遊んでみましょう!
Cubeを移動させながら、スペースキーでボールを並べたり、ぶつけたりして楽しめます✨
「この仕組みを応用して、弾を撃つシューティングゲームにしたい!」なんてアイデアもアリですよ!
複数のPrefabを選んで置けるようにしよう!
ここまでで、「スペースキーを押すと前にボール(Sphere)が出てくる!」という仕組みを作りましたよね。
次はそれをさらにレベルアップして、「好きなオブジェクトを選んで置ける」ようにしてみましょう!
🎯 どんなことができるの?
今回追加する機能では、キーボードの 数字キー(1〜3) を押すと、
Cubeの前に出すオブジェクトを切り替えられるようになります。
たとえばこんな感じ👇
- 「1」キーを押す → Ball(Sphere)を選択
- 「2」キーを押す → Capsule(カプセル)を選択
- 「3」キーを押す → Cylinder(円柱)を選択
そして、スペースキーを押すと、今選んでいるオブジェクトが前にポン!と出てくるというわけです🎉
🧠 ポイントは「配列(Array)」
今回は、3つのPrefab(Sphere、Capsule、Cylinder)を「配列(Array)」という形でまとめておきます。
スクリプトの中で、配列の番号を切り替えることで、出したいオブジェクトを選べるようになるんです!
💡 どんなときに使えるの?
この仕組みは、ゲームの中でこんなふうに使えます:
- プレイヤーが武器やアイテムを切り替える
- 道具を選んで設置する(建築ゲームとか)
- 敵の種類を変えて出す
などなど、とっても応用がきく便利なテクニックなんです!

それではさっそく、新しいオブジェクトを作るところから始めていきましょう〜!
次のステップ①では、「Capsule」と「Cylinder」を作って準備していきます!
ステップ①:新しいオブジェクト(CapsuleとCylinder)を作ろう
まずは、出せるオブジェクトを増やしていきましょう!
前回は「Sphere(ボール)」だけでしたが、今回は**Capsule(カプセル)とCylinder(円柱)**も追加します。
この2つをあとでプレハブにして、配列に入れて使っていきますよ!
🧱 Capsuleを作ってみよう!
ヒエラルキー(Hierarchy)ウィンドウを右クリックして、
「3D Object」→「Capsule」を選びましょう。
細長いカプセル型のオブジェクトが出てきたらOK!
🧊 Cylinderも作ろう!
次に、もう一度ヒエラルキーを右クリックして、
「3D Object」→「Cylinder」を選びます。
これで円柱の形をしたオブジェクトが追加されます。
🧲 Rigidbodyを追加しよう!
2つのオブジェクトに物理の動きをつけるため、**Rigidbody(リジッドボディ)**を追加しましょう!
やり方はどちらも同じです:
- Capsuleを選ぶ → インスペクターで「Add Component」をクリック
- 「Rigidbody」と入力して、出てきたコンポーネントを追加
Cylinderも同じように、Rigidbodyを追加してください!
これで、あとで出したときにちゃんと重力で落ちたり、転がったりするようになりますよ!
✅ ここまでのチェックポイント
- CapsuleとCylinderがシーンに追加された
- 両方とも Rigidbody がついている

次のステップ②では、これらのオブジェクトをプレハブ化して、使いまわせるようにしていきます!
ステップ②:Prefab化しよう
前のステップで作った Capsule と Cylinder、ちゃんと動きましたか?
ここでは、これらを**Prefab(プレハブ)**にして、いつでも呼び出せるようにしておきましょう!
🛠 Projectビューにドラッグ&ドロップしよう!
やり方はとっても簡単!
- Hierarchy(ヒエラルキー)で Capsule を選ぶ
- そのまま Project(プロジェクト)ビューにドラッグ&ドロップ
→ これで、青いアイコンの「Capsule プレハブ」ができました!
同じように Cylinder も Projectビューにドラッグ&ドロップしてください。
これで、2つともPrefab化完了です!
🗑 元のオブジェクトは削除してOK!
Prefabができたら、Hierarchy上にある Capsule と Cylinder はもう使わないので、削除しておきましょう。
それぞれを選んで 右クリック → Delete を押せばOK!
あとでスクリプトから、必要なときにプレハブを使ってオブジェクトを出せるようになります✨
✅ ここまでのチェックポイント
- CapsuleとCylinderのプレハブがProjectビューにできている
- シーン上から元のオブジェクトは削除済み

次のステップでは、いよいよPutBallスクリプトを配列対応にして切り替え機能を追加していきます!
ステップ③:PutBallスクリプトを配列対応に書き換えよう
ここでは、さっきまでの「ボールを出すだけのスクリプト」をちょっと改良して、
複数のPrefabを選んで出せるスクリプトにしていきます!
使うのは「配列(Array)」という仕組みです。
これを使えば、Prefabをまとめて管理して、数字キーで切り替えることができますよ〜!
📝 スクリプトを書き換えよう
まずは、Projectビューにある PutBall.cs スクリプトをダブルクリックして開きます。
次のコードを入力してください👇
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PutBall : MonoBehaviour
{
public GameObject[] myArray = new GameObject[3];
private int number;
void Update ()
{
if (Input.GetKeyDown(KeyCode.Alpha1))
{
number = 0;
}
else if (Input.GetKeyDown(KeyCode.Alpha2))
{
number = 1;
}
else if (Input.GetKeyDown(KeyCode.Alpha3))
{
number = 2;
}
if (Input.GetKeyDown("space"))
{
Instantiate(myArray[number], transform.position, Quaternion.identity);
}
}
}
🧠 ここがポイント!
GameObject[] myArray
は、Prefabをまとめて入れておく「配列」です。- 数字キー「1〜3」を押すと、
number
に 0〜2 の値が入ります。 Instantiate(myArray[number], ...)
で、選ばれたPrefabを出すことができます!
つまり、「1」を押してからスペースキーを押すと配列の0番目、
「2」を押してからスペースキーを押すと配列の1番目が出る、という流れになります✨
🧩 インスペクターでPrefabを設定しよう!
スクリプトを書いたら、**PutBallスクリプトをアタッチしているオブジェクト(BallPosなど)**を選びましょう。
インスペクターを見ると、my Array という項目が表示されているはずです!
- 要素 0 → Sphere プレハブをドラッグ&ドロップ
- 要素 1 → Capsule プレハブ
- 要素 2 → Cylinder プレハブ
この順番でセットすれば、数字キー「1〜3」でPrefabを選べるようになります!
✅ ここまでのチェックポイント
- PutBall.cs のスクリプトが配列対応に書き換えられている
- スクリプトが空のオブジェクトにアタッチされている
- インスペクターで3つのPrefabが配列に設定されている
💡もし「コードを書くのがちょっと難しいな…」と感じたら、
PlayMakerというアセットを使えば、コードなしで同じような動作を作ることもできます!
ブロックをつなげるだけのビジュアル操作でゲームロジックを組めるので、初心者にも超おすすめです!

次のステップ④では、実際に数字キーを押してPrefabを切り替えられるか、動作確認をしていきましょう!
ステップ④:動作確認してみよう!
さて、ここまでの準備ができたら…いよいよ実際に動かしてみましょう!
本当に数字キーでPrefabが切り替えられて、スペースキーで配置できるのか?ワクワクですね😊
▶ ゲームを再生しよう!
Unityの上にある「▶(再生)」ボタンを押して、ゲームをスタートします。
さあ、試してみましょう!
⌨ キーボード操作を試そう!
- **数字キー「1」**を押す
→ Ball(Sphere)が選ばれます - スペースキーを押す
→ Ballが前にポンっと出てくる!
次に…
- **数字キー「2」**を押す
→ Capsule(カプセル)を選択 - スペースキーを押す
→ カプセルが前に出現!
そして…
- **数字キー「3」**を押す
→ Cylinder(円柱)が選ばれる - スペースキーを押す
→ 円柱が出てくる!
うまくいきましたか?✨
🎯 いろんな組み合わせを試してみよう!
移動しながら選んで置いたり、同じ種類をたくさん出したりしてみると面白いですよ!
- Cubeを動かして配置場所を変える
- スフィアをたくさん並べてドミノみたいにしてみる
- カプセルと円柱を交互に置いてみる
などなど、自分の好きなように試してみましょう!
✅ うまく動かないときはここをチェック!
- スクリプトのコードが正しく入力されているか?
- PutBall スクリプトが正しくアタッチされているか?
- インスペクターで配列にPrefabがちゃんと入っているか?
どれかが抜けているとうまく動かないので、ゆっくり落ち着いて確認してみてくださいね!
🎉 おつかれさまでした!
今回のチュートリアルで、以下のことができるようになりました!
- 配列(Array)を使って複数のPrefabを管理する
- 数字キーで選んで切り替える
- スペースキーでPrefabを出す
🔄コードでの実装に慣れてきたら、ビジュアルスクリプティングにも挑戦してみましょう!
PlayMakerなら、プログラミングが苦手でも直感的にゲームの仕組みが作れます。
将来的にもっと複雑なロジックを簡単に組みたい方にぴったりのツールです!

これらは、ゲームの武器選択・アイテム配置・ギミック操作など、いろんな場面で応用できる超便利なテクニックです!
よくある質問(FAQ)
- QPrefabが出てこないのはなぜ?
- A
配列の該当インデックスにPrefabがセットされていない可能性があります。
- QどのPrefabが選ばれているか見分けるには?
- A
UIで番号や名前を表示したり、選択時にログを出す方法もあります。
- QPrefabの数を増やしたいときは?
- A
配列のサイズを変更し、スクリプト側で対応するキーと番号を追加しましょう。