Unityゲームの作り方メモコインプッシャー

【Unity3D】コインプッシャーゲームの作り方②~コインを発射する機能を作ろう!

Unity

1. はじめに

こんにちは!今回は、Unityを使ってコインプッシャーゲームの基礎的な部分である「コインを発射する」機能を作ってみましょう。コインプッシャーゲームは、シンプルながらも物理演算を活用した楽しいゲームです。Unity初心者でも手軽に作れるので、ゲーム開発を始めたばかりの方にもぴったりです。

この記事では、前回作成したコインのオブジェクトを活用して、簡単なスクリプトを組み、コインが発射される仕組みを作成します。ゲームの面白さのカギとなるこの機能を、手順を追いながら一緒に作りましょう!

記事を読み終える頃には、自分でコインを発射して楽しめるゲームの基本部分が完成します。それでは早速始めましょう!

Unityを触ったことがないという方はコチラの記事から見てみてください!



2. 準備: コインをPrefabにする

コインプッシャーゲームの基礎となるコインをPrefab化して、後々の開発をスムーズに進める準備をしましょう。以下の手順で簡単に進められます!

ステップ1: コインにRigidbodyを追加する

  1. ヒエラルキーウィンドウで「Coin」という名前のオブジェクトを選択します。
    ※ まだ「Coin」オブジェクトがない場合は、こちらの記事の手順で作成してください。
  2. インスペクターウィンドウに注目し、「Add Component」ボタンをクリックします。
  3. 「Rigidbody」と検索して選択し、コインにRigidbodyコンポーネントを追加します。
    これにより、コインに物理演算が適用され、ゲーム内で自然に動作します。

ステップ2: コインをPrefabに変換する

  1. ヒエラルキーウィンドウの「Coin」オブジェクトをドラッグして、プロジェクトウィンドウにドロップします。
  2. ドロップすると、プロジェクトウィンドウに「Coin」というPrefabが作成されます。
    ※ このPrefabは、ゲーム内で繰り返し使用できるようになります。
  3. ヒエラルキーウィンドウにある「Coin」オブジェクトを削除します。Prefabが完成しているので、ここで削除しても問題ありません。

ワンポイントアドバイス

  • Rigidbodyの「Use Gravity」チェックが入っていることを確認してください。これがオンになっていると、コインが自然に落下するようになります。
  • プロジェクトウィンドウに表示されたPrefabのアイコンが青色になっていれば、正しくPrefab化されています!

これで、コインをPrefabとして準備する作業が完了しました!次のステップでは、コインを発射するための仕組みを作っていきます。楽しみにしていてくださいね!



発射ポイントの作成

コインを発射するポイントを作成するには、Unityの空のオブジェクトを使用します。このオブジェクトは、コインが発射される位置と方向を指定する役割を果たします。以下の手順で発射ポイントを作成しましょう!


1. 空のオブジェクトを作成する

  1. ヒエラルキーウィンドウで右クリックします。
    表示されたメニューから、**「Create Empty(空のオブジェクトを作成)」**を選択します。
  2. 作成された空のオブジェクトの名前を**「CreatePoint」に変更します。
    名前を変更するには、オブジェクトを選択した状態で
    F2キー**(またはMacの場合はEnterキー)を押すと編集できます。

2. 位置を調整する

CreatePointからコインが発射されるため、適切な位置に配置する必要があります。

  1. CreatePointを選択した状態で、インスペクター画面の「Transform」セクションを確認します。
  2. 以下の値を入力して位置と向きを調整します:
    • Position(位置)
      • X: 0
      • Y: 3
      • Z: 5
    • Rotation(回転)
      • X: 0
      • Y: 180
      • Z: 0

これにより、CreatePointがコイン発射のスタート地点として正しく配置されます。


3. 確認する

ヒエラルキーウィンドウでCreatePointを選択すると、シーンビューにその位置が表示されます。**「Y座標が少し高い位置」**にあり、Z軸方向を向いていれば正しく配置されています!

ポイント
発射位置が見えづらい場合は、CreatePointに一時的に目印(例えばCubeやSphere)を追加して確認すると便利です。


これで発射ポイントの準備は完了です!次は、コインを発射するスクリプトの作成に進みましょう。



4. コインを発射するスクリプトの作成

次に、コインを発射するためのスクリプトを作成していきます。ここでは「CoinShooter」という名前のスクリプトを作成し、発射ロジックを記述します。


スクリプトの作成方法

  1. プロジェクトウィンドウで右クリックします。
    Create」→「C# Script」を選択し、スクリプトを作成します。
  2. スクリプトの名前を「CoinShooter」に変更します。
  3. スクリプトをダブルクリックして開きます。

スクリプトのコード

以下のコードを入力してください。このスクリプトでは、マウスの左クリックでコインを発射する機能を実装します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CoinShooter : MonoBehaviour
{
    public GameObject coinPrefab; // コインのプレハブ
    public float shootForce = 500f; // 発射する力

    // 毎フレーム呼び出される
    void Update()
    {
        // マウス左クリックでコインを発射
        if (Input.GetMouseButtonDown(0))
        {
            ShootCoin();
        }
    }

    void ShootCoin()
    {
        // コインを作成して前方に発射する
        GameObject coin = Instantiate(coinPrefab, transform.position, transform.rotation);
        Rigidbody rb = coin.GetComponent<Rigidbody>();
        rb.AddForce(transform.forward * shootForce);
    }
}

コードのポイント解説

  1. public GameObject coinPrefab;
    • コインのPrefabを指定するための変数です。Unityエディター上で設定します。
  2. public float shootForce = 500f;
    • コインを発射する力を設定します。この値を調整することで、発射速度を変えることができます。
  3. Updateメソッド
    • 毎フレーム呼び出されるメソッドです。ここでは、マウスの左クリック(Input.GetMouseButtonDown(0)) を検知して、コインを発射するShootCoinメソッドを呼び出しています。
  4. Instantiateメソッド
    • コインPrefabのインスタンスを生成します。このインスタンスが発射されます。
  5. rb.AddForce
    • Rigidbodyに力を加えて、コインを前方に発射します。

スクリプトの保存

コードを書き終えたら、**Ctrl + S(または Command + S)**を押してスクリプトを保存しましょう。

次は、このスクリプトをゲームオブジェクトにアタッチして、コイン発射機能を動作させる準備をします!



5. スクリプトのアタッチと設定

ここでは、作成した「CoinShooter」スクリプトをUnityのシーンに適用する方法を解説します。スクリプトのアタッチと設定を行えば、コインを発射する仕組みが完成しますよ!


1. スクリプトをオブジェクトにアタッチする

  1. ヒエラルキーウィンドウで、コインを発射するために作成した空のオブジェクト「CreatePoint」を選択します。
  2. プロジェクトウィンドウで作成した「CoinShooter」スクリプトを探してください。
  3. スクリプトをドラッグして「CreatePoint」にドロップします。
    • これでスクリプトが「CreatePoint」にアタッチされます。

2. コインのPrefabを設定する

次に、コインのプレハブをスクリプトに設定します。これを行うことで、スクリプト内でコインを正しく生成できます。

  1. ヒエラルキーウィンドウで「CreatePoint」を選択し、インスペクター画面を開きます。
  2. 「CoinShooter」スクリプトのインスペクター画面に「Coin Prefab」という項目があります。
  3. プロジェクトウィンドウでコインのPrefabを探し、「Coin Prefab」の欄にドラッグ&ドロップします。

これでコインを発射する仕組みが完成です!次のステップでは、ゲームをより楽しくするための追加機能について見ていきましょう!



6. テストプレイ

いよいよ、作成した「コイン発射機能」が正しく動作するかを確認するテストプレイの時間です!以下の手順に従って進めてみてください。


1. シーンを保存する

まずは、現在の進行状況を保存しましょう。Unityエディターのメニューから「File」→「Save As」をクリックし、シーンを保存します。名前は「CoinPusherScene」など、わかりやすいものにすると良いでしょう。


2. プレイモードを開始する

Unityエディターの上部にある「▶︎」ボタン(再生ボタン)をクリックしてプレイモードを開始します。シーンが動き始めたら、カメラの位置やオブジェクトの配置を確認してください。


3. コインを発射してみる

プレイモード中に、マウスの左クリックをしてみましょう!先ほど設定した「CreatePoint」から、コインが発射されるはずです。

  • 確認するポイント
    1. コインが正しい位置から発射されているか。
    2. コインがまっすぐ飛ぶか、もしくは想定通りの挙動をしているか。
    3. コインが発射された後、地面や他のオブジェクトと衝突して適切に動作するか。

4. 問題がある場合の対処法

もし、期待通りに動かない場合は以下をチェックしてみてください:

  • スクリプトが正しく設定されているか
    • 「CreatePoint」に「CoinShooter」スクリプトがアタッチされているか。
    • 「Coin Prefab」欄に正しいPrefabが設定されているか。
  • コインのRigidbodyが設定されているか
    • Rigidbodyが正しく追加されていないと、物理挙動が働きません。
  • 位置や回転が正しいか
    • CreatePointの「Position」や「Rotation」を再度確認してください。

5. 発射速度を調整してみる

発射されたコインが速すぎたり遅すぎたりする場合、スクリプト内の shootForce の値を変更しましょう。

public float shootForce = 500f; // 現在の値

例えば、速くしたい場合は shootForce = 800f;、遅くしたい場合は shootForce = 300f; に変更してみてください。


6. 再度テストプレイ

修正した内容を保存したら、もう一度再生ボタンを押してテストプレイを行いましょう。うまくいけば、コインが期待通りに発射されるはずです!


これでコイン発射機能のテストプレイは完了です。次回は、コインが押し出すメカニズムを追加していきましょう!お楽しみに!



よくある質問(FAQ)

Q
コインが発射されない場合はどうすればいいですか?
A

いくつか確認すべきポイントがあります。以下を試してみてください。

  • Prefabの設定
    「Coin Prefab」に正しくコインのPrefabが設定されているか確認してください。プロジェクトウィンドウからドラッグ&ドロップで設定しましょう。
  • Rigidbodyの確認
    コインのPrefabにRigidbodyコンポーネントが追加されているかチェックしてください。これがないと物理演算が機能しません。
  • スクリプトのアタッチ
    「CoinShooter」スクリプトがCreatePointに正しくアタッチされているか確認してください。
Q
発射速度を変更したい場合はどうすればいいですか?
A

スクリプト内の shootForce の値を変更すれば、発射速度を調整できます。以下のように値を変更してみてください。

public float shootForce = 1000f; // 発射する力を大きく

値を大きくするほど発射速度が速くなり、小さくするほど遅くなります。お好みの速度に調整してみてください。

Q
コインが他のオブジェクトに干渉しすぎてしまう場合の対処法は?
A

いくつか方法があります。状況に応じて対策を選びましょう。

  • コライダーの調整
    コインのPrefabにアタッチされているコライダーの大きさや形状を調整してみてください。
  • レイヤーの設定
    コインを特定のレイヤーに設定し、他のオブジェクトと干渉しないようにレイヤーごとの衝突を管理することができます。
    1. コインのPrefabを選択し、「Layer」を設定します。
    2. Unityの「Edit」>「Project Settings」>「Physics」から、レイヤーごとの衝突を設定できます。
  • Physics Materialの利用
    コインのコライダーにPhysics Materialを追加し、摩擦や跳ね返りを調整して、干渉の度合いを変更できます。

おすすめのアセット

「Slot Machine – Jackpot Mini Game」は、手軽にスロットゲームを作れるUnityアセットです。シンプルなインターフェースと使いやすさが特徴で、初心者でも簡単に導入可能です。このアセットは、スロットリールの回転や、ジャックポットの演出を備えた基本的なスロットゲームを提供し、ゲーム内での報酬システムをカスタマイズできます。サイズも軽く、他のプロジェクトにスムーズに統合できるため、ゲーム開発のスピードアップに貢献します。スロットゲームを追加して、プレイヤーのエンゲージメントを高めたい方に最適です。