Unityで一定間隔で発射する砲台を作る【3D】

今回やること

一定間隔で弾を発射する砲台を作ります

目次

素材の準備

こちらより砲台をダウンロードして、解凍して使ってください

砲台の作成

砲台をHierarchyにドラッグ&ドロップします

弾の作成

Create → 3Dobject → Sphereを選択します
別の弾を使いたい場合はHierarchyにドラッグ&ドロップします

弾の名前をBulletにします

弾の当たり判定

弾を選択し、コライダーのIsTriggerにチェックを入れます
当たり判定がついてない場合はAddComponentをおし、検索欄に「co」と入力し、任意のコライダー を選択します

弾に重力をつける

AddComponentをおし、検索欄に「ri」と入力し、Rigidbodyを選択します

UseGravityのチェックを外して重力がかからないようにし、FreezeRotationにチェックを入れて回転しないようにします

弾にタグをつける

弾を選択し、Untaggedをおし、AddTagをおします

+をおし、タグの名前をBulletにし、Saveをおします

再び弾を選択し、Untaggedをおし、Bulletを選択します

弾をプレファブ化する

弾をProjectにドラッグ&ドロップします

Hierarchyの弾を削除します

弾を発射する

弾を発射するスクリプトの作成

Create → C#Scriptを選択します

スクリプトの名前をBatteryScriptにして、ダブルクリックして編集画面を開き、以下のスクリプトを入力します

入力するスクリプト

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

public class BatteryScript : MonoBehaviour
{
    public GameObject Bullet; // 弾

    // Start is called before the first frame update
    void Start()
    {
        InvokeRepeating("Shot", 1, 1); // 1秒後に1秒ごとにShotを繰り返す 
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    void Shot() // 弾を発射する処理
    {
        GameObject Bullets = Instantiate(Bullet.gameObject, transform.position, transform.rotation); // 弾を砲台と同じ場所、同じ向きに生成する
        Vector3 Force; // 弾にかける力
        Force = transform.forward * 400; // 弾にかける力を砲台の前方向にする
        Bullets.GetComponent<Rigidbody>().AddForce(Force); // 弾に力をかける
        Destroy(Bullets.gameObject, 2); // 弾を2秒後に消す
    }
}

入力したら砲台にBatteryScriptをドラッグ&ドロップします

砲台を選択し、BatteryScriptのBulletにプレファブ化した弾をドラッグ&ドロップします

テストプレイをすると

一定の間隔で砲台が弾を撃ちます

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次