晚上好伙计们,我正在为我的学校作业开发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;
}
}
}
答案 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,如下面的图
以上图片仅供参考。