今回やること
一定間隔で弾を発射する砲台を作ります
目次
素材の準備
こちらより砲台をダウンロードして、解凍して使ってください
砲台の作成
砲台を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にプレファブ化した弾をドラッグ&ドロップします
テストプレイをすると
一定の間隔で砲台が弾を撃ちます
コメント