需要让我的spawnmanager随着时间的推移更快地生成对象(Unity c#)

时间:2015-04-23 18:51:12

标签: c# unity3d 2d unityscript 2d-games

晚上好伙计们,我正在为我的学校作业开发2D射击游戏,基本上你必须拍摄从屏幕左侧移动到右侧的敌人。

逐渐增加难度我试图增加敌人产生的间隔,但我不能让我的脚本工作。这是我到目前为止,虚拟更新部分是我试图提高速度的地方(没有运气),希望有人能给我一个指针:)

using UnityEngine;
using System.Collections;
public class Spawner : MonoBehaviour {
    public bool SpawnerEnabled;
    public GameObject Enemy;
    public float SpawnInterval;
    void Start () 
    {
        StartCoroutine (SpawnEnemy ()); //starter spawnenemy koden
        SpawnerEnabled = true;
    }
    void Update () 
    {
        public float SpawnInterval+0.001;
        yield return new WaitForSeconds(1);

    }

    IEnumerator SpawnEnemy()
    {
        while (true) {
            if(SpawnerEnabled)
            {
            GameObject alien = Instantiate(Enemy) as GameObject;
                alien.name = "Enemy"; //Dette gør at clonen ikke kommer til at hedde enemy(clone) men bare enemy
                alien.transform.position = new Vector3(-20,Random.Range(-4f,5f), 2); // inden for intervallet -4 og +5 på y axen kan objektet spawne, det er dog fastlåst til kordinat -11 på Yaxen og +2 på Zaxen

                yield return new WaitForSeconds(SpawnInterval); // her venter den det antal sekunder vi sætter den til for at spawne næste enemy

            }
                yield return null;
            }
    }
}

1 个答案:

答案 0 :(得分:1)

尝试以下代码,但您可能需要自定义以供使用

using UnityEngine;
using System.Collections;
public class Spawner : MonoBehaviour {
    public bool SpawnerEnabled;
    public GameObject Enemy;
    public float SpawnInterval;
    private Float timer;
    void Start () 
    {
        SpawnerEnabled = true;
        StartCoroutine (SpawnEnemy ());
    }

    IEnumerator SpawnEnemy()
    {
        while (SpawnerEnabled) {
            timer +=Time.deltaTime();
            if(timer >= SpawnInterval){
              GameObject alien = Instantiate(Enemy) as GameObject;
              alien.name = "Enemy";
              alien.transform.position = new Vector3(-20,Random.Range(-4f,5f), 2);

              yield return new WaitForSeconds(SpawnInterval);
              timer = 0;
              SpawnInterval += Mathf.Sqrt(time);
            }
    }
}

Mathf.Sqrt将增加spawninterval,如下面的图spawnInterval

以上图片仅供参考。