在Unity中随机产生障碍

时间:2016-03-20 19:30:50

标签: c# unity3d

目前我正在制作游戏,当玩家移动时会生成整个关卡。我有工作脚本,但现在我想在玩家面前制造障碍。我的想法是将空对象添加到我的地形段(这些是动态生成的),然后在运行时在其位置实例化随机障碍物。我唯一不知道的是这个脚本应该如何选择随机空对象(空对象是段的子对象)来实例化这个障碍?生成级别的脚本附加到播放器。

3 个答案:

答案 0 :(得分:1)

这可以让您了解如何操作。 将随机游戏对象生成到您地形周围的空游戏对象之一。

//Add the random objects in the inspector
public List<GameObject> gameObjects;
//Spawn points around the terrain
public List<Transform> emptyTransforms;

foreach(var item in emptyTransforms){
    var objToSpawn = gameObjects[Random.Range(0, gameObjects.Length)];
    var objSpawned = Instantiate(objToSpawn, emptyTransforms[Random.Range(0, emptyTransforms.Length)].position, Quaternion.identity);
    objSpawned.transform.SetParent(newParent);
}

答案 1 :(得分:0)

使用Random.Range函数计算随机值。然后在您想要产生障碍的位置的范围内创建值,并使用这些值创建Vector3。现在障碍在随机区域产生。

答案 2 :(得分:0)

如果您有可能位置的固定列表,只需将它们存储在脚本中的公共变量中即可。如果您的空游戏对象是位置,请创建一个public GameObject[] positions;,填充它并使用Random.Range之类的内容来选择其中一个。

另外,我建议您查看项目池并且不要一直实例化新对象(并且可能会破坏&#34;旧的&#34;那些)。这对你的表现更好。