如何使我的敌人在4个不同的Vector3位置之间随机生成?

时间:2019-11-16 12:48:47

标签: c# unity3d spawning

我目前正在创建一个游戏,该游戏的玩家位于正方形平台上,我希望敌人从平台的四个边缘随机生成。到目前为止,我能够使敌人从一个边缘随机生成,但是不知道如何从四个边缘生成它们。我想它将与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);
        }        
    }

1 个答案:

答案 0 :(得分:0)

最简单的方法是在正方形的4个侧面的每个侧面放置4个空的游戏对象作为生成器。将它们放在由游戏对象组成的数组中(类似于您对敌人的Prefabs数组所做的操作)。

然后,您将随机选择其中1个,就像选择敌人索引一样:

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

然后您可以确定该生成点的位置。

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

然后,您可以按照多种方式编辑该生成位置。例如,您可以将Y设置为等于0(或满足您的需要的任何值),可以向游戏对象的X位置添加一些偏移量(以使它们不会每次都在同一位置生成)。您基本上可以对X,Y,Z做到这一点-您只需要对其进行操作,直到它真正开始充当随机设置的生成器为止(请谨慎对待偏移量,以使您的敌人不会从该生成器中消失正方形)。

spawnPos.X = spawnPos.X + someOffset;

您还必须随机生成偏移量-就像上面的事情一样。