Unity

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にプレファブ化した弾をドラッグ&ドロップします

テストプレイをすると

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

このサイトについて

ここには、自己紹介やサイトの紹介、あるいはクレジットの類を書くと良いでしょう。

検索

このサイトについて

ここには、自己紹介やサイトの紹介、あるいはクレジットの類を書くと良いでしょう。

検索

-Unity

執筆者:


comment

メールアドレスが公開されることはありません。

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

関連記事

blenderで車のモデリングをしてから、ペジェでコース作って、Unityでマリオカートみたいなレーシングゲームにするてんこもりなチュートリアル

こんな感じのマリオカートみたいなレーシングゲームを作ります https://getabakoclub.com/wp-content/uploads/2018/11/douga2.mp4 車体を作る様子を …

Unityで地面の当たり判定を足元だけ取得する【3D】

今回やること Rigidbodyによるジャンプの時に地面の当たり判定を足元だけ取得します コライダーで判定をとる場合、コライダーの下で触れても、上で触れても地面に当たっていることになってしまいます 例 …

no image

Unityでオブジェクトに色をつける【Material】

マテリアルの作成 Create → Materialを選択します マテリアルに名前をつける マテリアルに色をつける inspector部分の色のアイコンをクリックすると色を選択出来るようになります オ …

ARプレゼンツール

使用用途 2020.3.27に秋田総研さんが主催したオンラインプレゼン大会Talk Your Will Akita(TYWA)で使用したARプレゼンツールです Unityでカメラを映し、その空間内にA …

no image

ランダムな場所にクローン生成

using System.Collections; using System.Collections.Generic; using UnityEngine; public class Clone : …

ゲタバコ倶楽部へようこそ

  • 300739総閲覧数:
  • 22今日の閲覧数:
  • 231532総訪問者数:
  • 19今日の訪問者数:

住所
Akita,Japan

営業時間
月~日: 10:00 AM – 10:00 PM

このページはゲタバコ先生の日々思うことや活動、プログラミングの習得方法を発信するページです。
仕事のご依頼、メッセージ等、サービス概要をご覧の上で、お気軽にご連絡ください。

getabakosensei@gmail.com