UnityでのFireボタン連射サンプル資料

2025年4月1日

この資料では、Unityにおいて「Fire1」ボタンを使用して連射(一定間隔で弾を発射)するサンプルコードの実装方法と使用手順について説明します。


1. 概要

本サンプルは、ユーザーが「Fire1」ボタンを押し続けた場合に、一定の間隔(fireRateで指定)で弾を発射する機能を実現します。
具体的には、以下の動作を実装しています。

  • ボタン入力の監視: Input.GetButton("Fire1") により「Fire1」ボタンが押されているか確認します。
  • 連射間隔の管理: Time.timenextFireTime を用いて、一定時間経過後に次の弾を発射します。
  • 弾の生成: 指定された発射位置(firePoint)と角度で弾のプレハブ(bulletPrefab)を生成します。

2. サンプルコード

以下のC#スクリプトを、Unityプロジェクトの適切なGameObjectにアタッチしてください。

using UnityEngine;

public class RapidFire : MonoBehaviour
{
    // 発射する弾のプレハブをインスペクタからアサイン
    public GameObject bulletPrefab;
    // 弾の発射位置となるTransformをインスペクタからアサイン
    public Transform firePoint;
    // 弾の連射間隔(秒)
    public float fireRate = 0.2f;

    // 次の発射可能な時間
    private float nextFireTime = 0f;

    void Update()
    {
        // "Fire1" ボタンが押され、かつ、連射間隔が経過している場合
        if (Input.GetButton("Fire1") && Time.time >= nextFireTime)
        {
            Fire();
            nextFireTime = Time.time + fireRate;
        }
    }

    void Fire()
    {
        // bulletPrefabをfirePointの位置・角度で生成
        Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
    }
}

3. 使用方法

  1. シーン内にGameObjectを作成
    • 上記スクリプトを新規のC#スクリプトとして保存し、シーン内の任意のGameObjectにアタッチします。
  2. 弾のプレハブを準備
    • 発射する弾のプレハブ(bulletPrefab)を作成し、シーン内で動作するように設定します。
    • 弾が一定時間後に自動的に削除されるよう、別途スクリプトやパーティクルエフェクトを追加することも検討してください。
  3. 発射位置の設定
    • 弾が発射される位置を示すTransform(例:銃口オブジェクト)を作成し、スクリプトの firePoint に割り当てます。
  4. Input設定の確認
    • Unityの「Edit > Project Settings > Input Manager」にて、Fire1 ボタンの設定が正しくされているか確認してください(デフォルトでは左Ctrlキーやマウス左ボタンに割り当てられています)。

4. カスタマイズのポイント

  • 連射速度の変更
    fireRate の値を調整することで、弾の発射間隔を変更できます。
    例: より速い連射を実現するには、fireRate の値を小さく設定します。
  • 弾の挙動調整
    発射された弾に Rigidbody コンポーネントを追加し、物理演算による動作を実装することで、よりリアルな挙動を実現できます。
  • その他の発展的な機能
    ・弾の消滅タイミングを調整するためのライフタイム管理
    ・弾の発射音やエフェクトの追加
    ・複数の弾を同時に発射するマルチショットの実装

以上が、UnityでFireボタンによる連射機能を実装するためのサンプルコードとその詳細な解説です。
この資料をもとに、用途に応じた拡張やカスタマイズを行ってください。

InputSystem版

Unityの新しい入力システムでの場合です

Unity

Posted by hidepon