gpt4 book ai didi

c# - 如何使用 C# 在 Unity 3D 中随机时间(相同位置)生成敌人?

转载 作者:行者123 更新时间:2023-11-30 20:15:23 26 4
gpt4 key购买 nike

我重复生成每个 1.75f 的敌人。但我不知道如何使用随机函数。我的原型(prototype)游戏就像Chrome浏览器中的游戏一样,找不到页面时出现。

谢谢你帮助我。

这是我的代码:

    using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EnemyGeneratorController : MonoBehaviour
{
public GameObject enemyPrefeb;
public float generatorTimer = 1.75f;

void Start ()
{

}

void Update ()
{

}

void CreateEnemy()
{
Instantiate (enemyPrefeb, transform.position, Quaternion.identity);
}

public void StartGenerator()
{
InvokeRepeating ("CreateEnemy", 0f, generatorTimer);
}

public void CancelGenerator(bool clean = false)
{
CancelInvoke ("CreateEnemy");
if (clean)
{
Object[] allEnemies = GameObject.FindGameObjectsWithTag ("Enemy");
foreach (GameObject enemy in allEnemies)
{
Destroy(enemy);
}
}
}
}

最佳答案

您可以使用 StartCoroutine 进行简单的敌人实例化:

using System.Collections;

...

private IEnumerator EnemyGenerator()
{
while (true)
{
Vector3 randPosition = transform.position + (Vector3.up * Random.value); //Example of randomizing
Instantiate (enemyPrefeb, randPosition, Quaternion.identity);
yield return new WaitForSeconds(generatorTimer);
}
}

public void StartGenerator()
{
StartCoroutine(EnemyGenerator());
}

public void StopGenerator()
{
StopAllCoroutines();
}

而且,正如 Andrew Meservy 所说,如果您想为计时器添加随机性(例如使生成延迟从 0.5 秒到 2.0 秒随机),那么您只需将 yield return 替换为这个:

yield return new WaitForSeconds(Mathf.Lerp(0.5f, 2.0f, Random.value));

关于c# - 如何使用 C# 在 Unity 3D 中随机时间(相同位置)生成敌人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54911619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com