簡単な縦型の2Dシューティング作成(スマホ)。Part3.弾の発射【Unityゲーム作成】

簡単な2Dシューティングゲーム作成の第3回目を進めていきます。今回は機体(プレイヤー)から弾が発射できるようにしていきます。

はじめに

前回の続きで第3回目です。第1回目は下記から。

簡単なおさらいと今回やる事

前回まで、簡単な画面を作成して、矢印ボタンを押して機体が動くようにしました。今回は、機体から弾が出るようにします。

ゲーム作成開始

では、さっそく作成していきます。

弾の作成

まずは仮となる弾を用意します。Imagesフォルダ内で右クリック。作成から「2D」→「スプライト」→「円」を選びます。

名前をBulletにしてヒエラルキーにドラッグアンドドロップ。このままだと大きいのでスケールを変更しておきます。

当然ですが、弾は何発も発射します。もちろん、同じ弾なのでこのようなものはプレハブ化しておきます。テンプレートみたいなものですね。ヒエラルキーからPrefabsフォルダ内にドラッグアンドドロップ。

スクリプトで弾を発射

次に、Scriptsフォルダ内で右クリック。作成から「C#スクリプト」を選択し、Bulletと言う名前で新しくファイルを作成します。

Bulletスクリプトの中身は下記のように変更します。縦方向に場所を移動しているだけです。

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

public class Bullet : MonoBehaviour
{

    void Update()
    {
        transform.position += new Vector3(0, 4f * Time.deltaTime, 0);
    }

}

このスクリプトをBulletにくっつけます。

試しに動かしてみると、弾が上に向かって動いていきます。これで弾の動きは一旦OKですね。

弾を複数作成する

次に「Attack」ボタンを押した時に弾が出るようにします。Scriptsフォルダ内に新たに「PlayerAttack」という名前でファイルを作成します。

PlayerAttackスクリプトの中身は下記のように変更します。Attackが呼ばれたときにオブジェクトを生成しています。

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

public class PlayerAttack : MonoBehaviour
{
    public GameObject prefabBullet;

    public void Attack()
    {
        Instantiate(prefabBullet);
    }
}

このスクリプトをPlayerにくっつけます。Public変数は「Bulletプレハブ」を指定します。ヒエラルキーにあったBulletは不要なので消しておきます。

Attackボタンを押した時に呼ばれるように、Attackのクリック時のイベントに追加します。

これで一度実行してみます。ボタンを押すと弾が出ますが、機体がどこにいても真ん中の決まった場所から弾が出ます。

弾の出る位置を調整

次に、弾が出る位置を「機体の先端」に変更します。Player配下に「空のオブジェクトを作成」。

弾が出る位置なので名前は「BulletPoint」にでもしておきます。機体の前の方のいい感じの位置に調整します。

PlayerAttackスクリプトを下記のように変更します。オブジェクトの生成場所をパラメータで指定します。

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

public class PlayerAttack : MonoBehaviour
{
    public GameObject prefabBullet;
    public Transform bulletPoint;

    public void Attack()
    {
        Instantiate(prefabBullet, bulletPoint.position, bulletPoint.rotation);
    }
}

新たに追加した変数にBulletPointを指定します。

これで試しに動かして機体から弾が出るような動きになればOK。次回はマトとなる敵を生成していきます。

タイトルとURLをコピーしました