Unity シューティングゲーム プレイヤー移動と弾の実装・生成[コピペOK](所要時間5分)

2023年10月21日

スポンサーリンク

私は、ゲームエンジンであるUnityについて勉強をしてます。

そこで、その過程で学んだことについてこれから記していこうと思う。

のちに自分でも見なおせるように・・・

注意(動画でのburretはbullletに書き換えてください。)

スポンサーリンク

プレイヤー移動の実装

プレイヤーオブジェクトを生成し、C#スクリプトを作ります。

(右クリック→create→C#スクリプト)

スポンサーリンク

そしてそのC#スクリプトのUpdata関数の中に以下をコピペします。

    if (Input.GetKey(KeyCode.UpArrow))
    {
        transform.position += new Vector3(0, 2f, 0) * Time.deltaTime;
    }
    else if (Input.GetKey(KeyCode.DownArrow))
    {
        transform.position += new Vector3(0, -2f, 0) * Time.deltaTime;
    }
    else if (Input.GetKey(KeyCode.RightArrow))
    {
        transform.position += new Vector3(2f, 0, 0) * Time.deltaTime;
    }
    else if (Input.GetKey(KeyCode.LeftArrow))
    {
        transform.position += new Vector3(-2f, 0, 0) * Time.deltaTime;
    }

これを保存し、プレイヤーオブジェクトに張り付けます。

これだけでキーボードの矢印キーでプレイヤーを操作できます。

弾の実装と軌道の設定

手順1(弾の発射位置を決める)

初めにプレイヤーの子オブジェクトとして空のオブジェクト(今回はfirepoint)を作ります。

子オブジェクトとしたことで、空のfirepointはプレイヤーと連動した動きをします。

スポンサーリンク

firepointは弾の発射位置となるため、好みの位置に調節します。

手順2(弾の実装・軌道の設定)

次に、弾となるオブジェクト(今回はBullet)を生成します。

Bulletは生成しただけでは、動くことが出来ないので、

弾の軌道を設定するためbulletスクリプトを作り、Update関数に以下をペーストします。

    transform.position += new Vector3(0, 5f, 0) * Time.deltaTime;

これにより、弾は上方向に飛ぶようになります。

(この際、xの値にsin関数などを導入すれば弾を波の様に動かすことも可能です。)

このスクリプトをBulletに張り付け、動画の様にプレハブ化します。

プレハブ化後のBulletオブジェクトは不要なので消してしまいます。

これで弾とその弾道は設定完了。

手順3(弾の生成)

最後に弾を生成するスクリプト(bullet controller)を作り以下のスクリプトを張り付けてください。

public Transform firepoint;
public GameObject BulletPrefab;
public float span = 0.3f;
private float Timecount = 0f;

void Update()
{
    Timecount += Time.deltaTime;
    if (Timecount > span)
    {
        Instantiate(BurretPrefab, firepoint.position, transform.rotation);
        Timecount = 0f;
    }

}

これをプレイヤーオブジェクトに張り付け、プレイヤーのinspecterビューで、

動画の様にBulletやfirepointを関連付けます。

これで弾の自動生成が可能です。

弾の発射間隔はinspecterビューのspanを変更することで変えることが出来ます。

Unity公式 ユーザーマニュアル

他の記事

Unity オブジェクトを光らせる・シーンの変更方法[コピペOK](各所要時間4分)

Unity オブジェクト移動と鏡の作り方[コピペOK](所要時間5分)

スポンサーリンク