UnityでのFireボタン連射サンプル資料
この資料では、Unityにおいて「Fire1」ボタンを使用して連射(一定間隔で弾を発射)するサンプルコードの実装方法と使用手順について説明します。
1. 概要
本サンプルは、ユーザーが「Fire1」ボタンを押し続けた場合に、一定の間隔(fireRate
で指定)で弾を発射する機能を実現します。
具体的には、以下の動作を実装しています。
- ボタン入力の監視:
Input.GetButton("Fire1")
により「Fire1」ボタンが押されているか確認します。 - 連射間隔の管理:
Time.time
とnextFireTime
を用いて、一定時間経過後に次の弾を発射します。 - 弾の生成: 指定された発射位置(
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. 使用方法
- シーン内にGameObjectを作成
- 上記スクリプトを新規のC#スクリプトとして保存し、シーン内の任意のGameObjectにアタッチします。
- 弾のプレハブを準備
- 発射する弾のプレハブ(
bulletPrefab
)を作成し、シーン内で動作するように設定します。 - 弾が一定時間後に自動的に削除されるよう、別途スクリプトやパーティクルエフェクトを追加することも検討してください。
- 発射する弾のプレハブ(
- 発射位置の設定
- 弾が発射される位置を示すTransform(例:銃口オブジェクト)を作成し、スクリプトの
firePoint
に割り当てます。
- 弾が発射される位置を示すTransform(例:銃口オブジェクト)を作成し、スクリプトの
- Input設定の確認
- Unityの「Edit > Project Settings > Input Manager」にて、
Fire1
ボタンの設定が正しくされているか確認してください(デフォルトでは左Ctrlキーやマウス左ボタンに割り当てられています)。
- Unityの「Edit > Project Settings > Input Manager」にて、
4. カスタマイズのポイント
- 連射速度の変更
fireRate
の値を調整することで、弾の発射間隔を変更できます。
例: より速い連射を実現するには、fireRate
の値を小さく設定します。 - 弾の挙動調整
発射された弾に Rigidbody コンポーネントを追加し、物理演算による動作を実装することで、よりリアルな挙動を実現できます。 - その他の発展的な機能
・弾の消滅タイミングを調整するためのライフタイム管理
・弾の発射音やエフェクトの追加
・複数の弾を同時に発射するマルチショットの実装
以上が、UnityでFireボタンによる連射機能を実装するためのサンプルコードとその詳細な解説です。
この資料をもとに、用途に応じた拡張やカスタマイズを行ってください。
InputSystem版
Unityの新しい入力システムでの場合です
ディスカッション
コメント一覧
まだ、コメントがありません