2015-04-23 3 views
0

Добрый вечер, ребята, я работаю над этой 2D-шутерской игрой для моего школьного задания, где в основном вы должны стрелять в врагов, которые двигаются с левой стороны вправо стороне экрана.Необходимо, чтобы мой spawnmanager быстрее сбрасывал объекты со временем (Unity C#)

Чтобы постепенно увеличить сложность, я пытаюсь увеличить интервал, в котором враги порождаются, но я не могу заставить свой скрипт работать. Вот то, что я до сих пор, пустота Update часть, где я пытаюсь увеличить скорость (без удачи), надеюсь, что кто-то может дать мне указатель :)

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

Try ниже код, но вы можете необходимо настроить для использования

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

выше изображение только для справки.