【发布时间】:2015-02-14 06:48:12
【问题描述】:
我有这个脚本,当我击中触发器时,我的敌人随机生成,然后敌人随机摧毁自己。我想再次重生敌人,这样它就可以一遍又一遍地这样做。任何建议:
public class SpawnManager : MonoBehaviour {
public GameObject Enemy; // the enemy prefab
public float mytimer; // the time to wait before spawn
public float transport;// the time it has to destroy itself
private GameObject _spawndEnemy; // the enemy that was spawnd
void SpawnEnemy()
{
var enemySpawnPoint = GameObject.Find("FFEnemySpawn1").transform;
_spawndEnemy = Instantiate(
Enemy, enemySpawnPoint.position, enemySpawnPoint.rotation) as GameObject;
transport = Random.Range (2,15);
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.name == "FFTrigger") {
mytimer = Random.Range(0,15);
Invoke("SpawnEnemy", mytimer);
Debug.Log("Spawn Normal");
}
}
void Update()
{
Destroy (_spawndEnemy, transport);
}
}
【问题讨论】:
-
嗨 Ghostdre,这个问题可能更适合 Game Development SO 网站,至于让多个敌人产生,我会创建一个
Enemy类,然后保存一个数组或Enemy列表是在你的SpawnManager类中随机存在的时间 -
感谢 Matthew,我正在考虑数组,但我不知道如何设置。但我会在游戏开发网站上询问。
-
@Ghostdre 你是在尝试制作一种视差滚动的游戏吗?
-
不,它是一个 fps 3d 恐怖游戏,但我想我知道怎么做。我只是在 SpawnEnemy 中再次使用 Invoke 方法。但我可能会遇到一个问题,即敌人应该只生成一次,但它会生成多次。
-
Enemy 是您的预制件,因此请尝试创建 Enemy 实例而不是 GameObject。您可以稍后将实例作为 GameObject 处理,并且不要在 Update 中使用 Destroy,因为您可以在 SpawnEnemy() 方法的末尾使用它
public Enemy enemy;enemy.gameObject......
标签: c# unity3d instantiation destroy