C# 在统一中复活被摧毁的物体
我有这样一个脚本,当我触发时,我的敌人会在随机时间产生,然后敌人会在随机时间摧毁自己。我想让敌人再次重生,这样它就可以一次又一次地这样做。任何建议:C# 在统一中复活被摧毁的物体,c#,unity3d,instantiation,destroy,C#,Unity3d,Instantiation,Destroy,我有这样一个脚本,当我触发时,我的敌人会在随机时间产生,然后敌人会在随机时间摧毁自己。我想让敌人再次重生,这样它就可以一次又一次地这样做。任何建议: public class SpawnManager : MonoBehaviour { public GameObject Enemy; // the enemy prefab public float mytimer; // the time to wait before spawn public float transport;// the
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);
}
}
Hi Ghostdre这个问题可能会在这里得到更好的回答,至于你的问题,我建议为游戏对象创建一个
敌人类对象和数据成员,以及一个时间变量,它决定敌人在被摧毁之前应该活多久
e、 g
公共类管理器
{
公共浮动寿命;
...
无效更新()
{
寿命-=时间增量时间
如果(终生嗨,幽灵,这个问题可能更适合游戏开发,因此,对于让多个敌人产卵,我会创建一个敌人
类,然后在你的产卵管理器
类中保存一个数组或一组在你的产卵管理器
类中随机存在一段时间的敌人
,谢谢Matthew,我正在考虑数组。)但我不知道如何设置。但我会在游戏开发网站上询问。@Ghostdre你想让视差滚动式游戏成为一种游戏吗?不,这是一款fps 3d恐怖游戏,但我想我找到了如何设置的方法。我只是在“繁殖敌人”中再次使用Invoke方法。但我可能会遇到一个问题,敌人应该只繁殖一次,但是相反,它会多次繁殖。敌人是你的预制场,所以请尝试制作敌人的实例而不是游戏对象。你可以稍后将实例作为游戏对象处理,并且不要在更新中使用Destroy,因为你可以在繁殖敌人()结束时使用它方法公敌;
敌方。游戏对象……
因此,创建阵列“公敌敌人=新列表”将再次使敌人重生?这取决于您希望它如何工作,您希望它能够从同一个种子中繁殖多个敌人吗?还是希望一个种子在任何给定时间创建一个敌人?仅一个敌人在一次繁殖时繁殖。但是如果敌人摧毁了自己,我希望敌人在繁殖时重生。我已经编辑了我的示例,我的示例中有…是您现有代码的所在,您需要在spawnedy()
方法中为生存期设置一些值(如果您想要一个随机数,请使用random.Range(minVal,maxVal)
除此之外,您还应致力于更好地分解此程序中的功能(例如,使用敌方类来存放游戏对象、使用寿命等),否则您的代码将很快变得非常笨拙
public class SpawnManager
{
public float lifeTime;
...
void Update()
{
lifeTime -= Time.deltaTime
if (lifeTime <= 0)
{
Destroy (_spawndEnemy, transport);
SpawnEnemy()
}
}
}