gpt4 book ai didi

c# - 生成随机游戏对象?

转载 作者:太空狗 更新时间:2023-10-30 01:05:02 25 4
gpt4 key购买 nike

我的问题是,我希望我的障碍物生成器(位于玩家飞船前方一定距离处)在每次实例化障碍物时从一组不同的障碍物预制件中随机选择。我发现了很多关于如何随机化位置的话题,但这不是我想要的。我看过很多关于列表和标签的引用资料,但我似乎无法弄清楚如何正确实现它们。我将在下面发布我的 spawner 脚本,并附上我“认为”应该进行更改的评论。

using UnityEngine;
using System.Collections;

public class RandomSpawner : MonoBehaviour
{
public GameObject[] spawnObject; //somehow change this to incorporate multiple gameobject prefabs, will an array support that?

//Would I create public variables for each prefab I want to be randomly chosen from, or would those be contained in the array above?

public float xRange = 1.0f;
public float yRange = 1.0f;
public float minSpawnTime = 1.0f;
public float maxSpawnTime = 10.0f;

void Start()
{
Invoke("SpawnWall", Random.Range(minSpawnTime,maxSpawnTime));
}

void SpawnWall()
{
float xOffset = Random.Range(-xRange, xRange);
float yOffset = Random.Range(-yRange, yRange);
int spawnObjectIndex = Random.Range(0,spawnObject.Length);

//above line will have to change to reflect whatever goes above Start, possibly below as well

最佳答案

到目前为止,您所拥有的一切看起来都很好。将公共(public)数组附加到您的 monobehaviour 将使您可以从可用于生成的检查器中拖动预制件

在您的方法“SpawnWall()”中,您只需要从数组中选择一个预制件

GameObject randPrefab = spawnObject[spawnObjectIndex];

然后你会使用

GameObject newObstacle = GameObject.Instantiate(randPrefab) as GameObject;

然后通过它的变换做任何你想做的位置代码

我建议将您的数组重命名为“obstaclePrefabs”之类的名称,因为“spawnObject”并没有真正描述生成障碍物的列表。

关于c# - 生成随机游戏对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20317535/

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