2017-08-02 59 views
0

我正在嘗試製作一個無盡的2D遊戲。我想爲我的比賽使用3-4個產卵者。我的問題是我無法爲我的產卵者設定一個特定的時間。如何在Unity中的特定時間啓動和停止產卵器

遊戲開始後
第一個產卵者將在5秒後開始產卵並在15秒後停止,並且它不會再次開啓。

第二個產卵者將在15秒後開始產卵並在25秒後停止,並且它不會再次開啓。

第三個產卵者將在25秒後開始產卵並在40秒後停止產卵,並且不會再次開啓。

我想爲它們全部使用相同的spawner腳本。我想我需要一些公共價值。

這裏是我的產卵代碼:

using UnityEngine; 
using System.Collections;  

public class RandomSpawner : MonoBehaviour 
{ 
    bool isSpawning = false; 
    public float minTime = 5.0f; 
    public float maxTime = 15.0f; 
    public Transform[] spawnPoints; 
    public GameObject[] enemies; 

    IEnumerator SpawnObject(int index, float seconds) 
    { 
     Debug.Log("Waiting for " + seconds + " seconds"); 
     int spawnPointIndex = Random.Range(0, spawnPoints.Length); 

     yield return new WaitForSeconds(seconds); 
     Instantiate(enemies[index], spawnPoints[spawnPointIndex].position, transform.rotation); 

     isSpawning = false;    
    } 

    void Update() 
    { 
     if (!isSpawning) 
     { 
      isSpawning = true; 
      int konumIndex = Random.Range(0, enemies.Length); 
      StartCoroutine(SpawnObject(konumIndex, Random.Range(minTime, maxTime))); 
     } 
    } 
} 

回答

0

一種選擇是要測試的Time.realtimeSinceStartup,讓你一秒鐘的數量,因爲在比賽開始:

if (Time.realtimeSinceStartup >= minTime && Time.realtimeSinceStartup <= maxTime) { 
    //spawn stuff 
} 

這可能是足夠的,但一還有一點需要注意的是,如果你的遊戲開始的時間不是完全正確的參考點(例如,如果你首先有一個主菜單,那麼你創建的spawner的場景可能會在遊戲開始後很長時間開始),那麼你可能需要存儲一個當產卵者是......呃產生時的參考時間。例如:

public class RandomSpawner : MonoBehaviour { 
    float objectStartTime; 
    void Start() { 
     objectStartTime = Time.realtimeSinceStartup; 
    } 

    void Update() { 
     var timeSinceObjectStart = Time.realtimeSinceStartup - objectStartTime; 
     if (timeSinceObjectStart > minTime && timeSinceObjectStart < maxTime) { 
     //spawn stuff 
     } 
    } 
} 

希望這有助於!

相關問題