【问题标题】:How do I make my enemies spawn randomly between 4 different Vector3 positions?如何让我的敌人在 4 个不同的 Vector3 位置之间随机生成?
【发布时间】:2023-03-10 08:16:02
【问题描述】:

我目前正在创建一个游戏,其中玩家位于方形平台上,我希望敌人从平台的四个边缘随机生成。到目前为止,我能够让我的敌人从一个边缘随机生成,但不知道如何让它们从所有四个边缘生成。我想它可以与 Vector3 数组一起使用?但我正在努力做到这一点。请帮忙!

到目前为止我的生成代码:

void SpawnRandomEnemy()
    {
        if(!playerControllerScript.gameOver && !playerControllerScript.hasFreezePowerup)
        {
            int enemyIndex = Random.Range(0, enemyPrefabs.Length);
            Vector3 spawnPos = new Vector3(Random.Range(-spawnRange, spawnRange), 0, spawnPosZ);

            Instantiate(enemyPrefabs[enemyIndex], spawnPos, enemyPrefabs[enemyIndex].transform.rotation);
        }        
    }

【问题讨论】:

    标签: c# unity3d spawning


    【解决方案1】:

    您可以做的最简单的事情是在正方形的 4 个边的每一边放置 4 个空的游戏对象作为生成器。将它们放在一个由游戏对象组成的数组中(类似于您对enemyPrefabs 数组所做的操作)。

    然后你会像选择敌人索引一样随机选择其中一个:

    int spawnIndex = Random.Range(0, spawnPoints.Length);
    

    那么你就可以占据那个重生点的位置了。

    Vector3 spawnPos = spawnPoints[spawnIndex].transform.position;
    

    然后您可以通过多种方式编辑该生成位置。例如,您可以将 Y 设置为等于 0(或任何适合您需要的值),您可以为游戏对象的 X 位置添加一些偏移量(这样它们就不会每次都在同一位置生成)。您基本上可以对 X、Y、Z 执行此操作 - 您只需要玩弄它,直到它真正开始充当随机设置的生成器(请注意偏移量,以免您的敌人生成广场)。

    spawnPos.X = spawnPos.X + someOffset;
    

    您也必须随机生成偏移量 - 就像上面的内容一样。

    【讨论】:

    • 有道理,谢谢!我对 C# 和 Unity 非常陌生,所以我经常发现自己在最简单的事情上苦苦挣扎!所以感谢您的有用回答!
    猜你喜欢
    • 2011-10-26
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    相关资源
    最近更新 更多