(Unity6)スペースキーで砲弾を発射する(インプットシステムで実装)

(1)下準備(弾の設定)

  • Sphereオブジェクトを1つ作成
  • 名前を「Shell」に変更
  • 大きさ、色等は自由に設定
  • 「Rigidbody」を追加(ポイント)
  • 「Use Gravity」のチェックを外す(これでゆっくりでもまっすぐ飛ぶようになります)
  • Shellを「プレハブ化」したら、HierarchyにあるShellオブジェクトは削除

 

(2)下準備(発射台の設定)

  • 新規にCreate Emptyオブジェクトを作成
  • 名前を「ShotShell」に変更
  • 場所は自由に設定
  • これが発射台で弾はここから発射されます。

 

(3)スクリプトの作成

  • 新規にC#スクリプトを作成
  • 名前を「ShotShell」に変更
  • 下記のコードを書いてチェック
using UnityEngine;

public class ShorShell : MonoBehaviour
{
    // ★インプットシステム
    private InputSystem_Actions isa;

    public GameObject shellPrefab;

    void Start()
    {
        // ★インプットシステム
        isa = new InputSystem_Actions();
        isa.Enable();
    }

    void Update()
    {
        // デフォルトでは「Jump」が「space」キーと対応している。
        if(isa.Player.Jump.triggered)
        {
            GameObject shell = Instantiate(shellPrefab, transform.position, Quaternion.identity);
            Rigidbody shellRb = shell.GetComponent<Rigidbody>();
            shellRb.AddForce(transform.forward * 1000);

            // 5秒後に砲弾を破壊する。
            Destroy(shell, 5.0f);
        }
    }
}

(実行確認)

・スペースキーを押すと砲弾が生成されて、前方に飛んで行けば成功です。