【问题标题】:How would I add a random enemy amount?我将如何添加随机敌人数量?
【发布时间】:2022-11-19 17:37:17
【问题描述】:

我正在制作一款 2D 无尽跳跃游戏,您可以在其中跳上一个平台,它可能会有一个敌人。我希望有机会在那个平台上有两个敌人,而不是像在其他平台上那样只有一个。我还希望平台上有零敌人的机会。我也有一个名为“enemyCount”的浮点数,它在 0 到 2 之间是随机的,但我真的不知道如何实现它。我将在下面提供代码。我试着给“enemyCount”它自己的循环,但这使得它在开始时每个级别只产生 0 到 2 个敌人,因为循环是开始的。当然,将其放入更新会每秒产生敌人。我显然不会要求任何人为我编写代码。我真的不知道从哪里开始。

    public GameObject Ground;
public int groundCount;
public GameObject Enemy;
int enemyCount;
// Start is called before the first frame update
void Start()
{
    enemyCount = Random.Range(0, 2);
    groundCount = Random.Range(100, 300);
    for (int i = 0; i < groundCount; i++)
    {
        Vector2 EnemyPosition = new Vector2(Random.Range(-10f, 12f), i * 11);

        Vector2 spawnPosition = new Vector2(0, i * 10);
        Instantiate(Ground, spawnPosition, Quaternion.identity);

        for(int x = 0; x < enemyCount; x++)
        {
            Instantiate(Enemy, EnemyPosition, Quaternion.identity);

        }

    }
  
}

【问题讨论】:

    标签: loops unity3d random 2d


    【解决方案1】:

    因为您只生成了一次随机敌人计数,所以您需要将那条线移到外部循环内。您还需要在嵌套循环内移动生成敌人位置的线,否则所有敌人都会在同一位置生成。

    for (int i = 0; i < groundCount; i++)
    {
        enemyCount = Random.Range(0, 2);
        for(int x = 0; x < enemyCount; x++)
        {
            Vector2 EnemyPosition = new Vector2(Random.Range(-10f, 12f), i * 11);
            Instantiate(Enemy, EnemyPosition, Quaternion.identity);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-22
      • 1970-01-01
      相关资源
      最近更新 更多