前提・実現したいこと
unityで2Dシューティングゲームを制作しています。
敵がゲームシーンに出現したときに弾を打ち始め、3秒ごとに打ち続ける機能を実装したいです。
問題点
敵がゲームシーンに現れたときに弾を連続で発射し続けてしまいます。
該当のソースコード
c#
ソースコード
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class roguramu : MonoBehaviour
{
public GameObject expPrefab; //爆発アニメーション用プレファブ
public GameObject rogubullet; //弾発射用プレファブ
public GameObject animepre;
void OnWillRenderObject() { if (Camera.current.name != "SceneCamera" && Camera.current.name != "Preview Camera") { StartCoroutine("Shoot"); } } // Update is called once per frame void Update() { transform.Translate(0, -0.01f, 0); } //衝突したときに呼ばれる(IsTriggerにチェックが入っているとき)(敵と弾の当たり判定) void OnTriggerEnter2D(Collider2D c) { //爆発アニメーション用プレファブの生成 Instantiate(expPrefab, transform.position, transform.rotation); Destroy(gameObject); //自分自身を消去する }
IEnumerator Shoot()
{
while (true)
{
Instantiate(animepre, transform.position, Quaternion.identity);//アニメーション用
Instantiate(rogubullet, transform.position, Quaternion.identity);//弾のプレファブ生成
yield return new WaitForSeconds(3.0f);
}
}
//画面外に出たら消去 void OnBecameInvisible() { Destroy(gameObject); }
}
試したこと
waitforsecondのコルーチン(Wait)を作って、Shoot関数を呼び出した後にWaitを呼び出しても間隔を取れませんでした。
補足情報(FW/ツールのバージョンなど)
Unity2019.2.9f1
回答1件
あなたの回答
tips
プレビュー