Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实例化地形区域内的对象 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 公共类传送:单行为{ 公共矢量3 terrainArea; 公共浮动转速=2.0f; 公共互联网传输; 公共游戏对象预制; 私有布尔旋转=假; 私有布尔退出=假; 私人传送; 私有随机rnd=新随机(); 私有void Start() { GameObject go=GameObject.Find(“地形”); 地形地形=go.GetComponent(地形); terrainArea=地形.terrainData.size; for(int i=0;i_C#_Unity3d_Unity5 - Fatal编程技术网

C# 实例化地形区域内的对象 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 公共类传送:单行为{ 公共矢量3 terrainArea; 公共浮动转速=2.0f; 公共互联网传输; 公共游戏对象预制; 私有布尔旋转=假; 私有布尔退出=假; 私人传送; 私有随机rnd=新随机(); 私有void Start() { GameObject go=GameObject.Find(“地形”); 地形地形=go.GetComponent(地形); terrainArea=地形.terrainData.size; for(int i=0;i

C# 实例化地形区域内的对象 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 公共类传送:单行为{ 公共矢量3 terrainArea; 公共浮动转速=2.0f; 公共互联网传输; 公共游戏对象预制; 私有布尔旋转=假; 私有布尔退出=假; 私人传送; 私有随机rnd=新随机(); 私有void Start() { GameObject go=GameObject.Find(“地形”); 地形地形=go.GetComponent(地形); terrainArea=地形.terrainData.size; for(int i=0;i,c#,unity3d,unity5,C#,Unity3d,Unity5,现在一些游戏对象已经离开了地形区域。 我想做的是保持克隆体处于随机位置,但只在地形区域内 如何实例化地形区域内的对象?我注意到您正在创建Random类的新实例。不要在Unity的API中这样做。只是用来生成随机数 至于在地形上生成随机游戏对象: 1。查找X位置: 最终随机X应为: Min = terrain.terrainData.size.x. Max = terrain.transform.position.x + terrain.terrainData.size.x. Min = te

现在一些游戏对象已经离开了地形区域。 我想做的是保持克隆体处于随机位置,但只在地形区域内


如何实例化地形区域内的对象?

我注意到您正在创建
Random
类的新实例。不要在Unity的API中这样做。只是用来生成随机数

至于在地形上生成随机游戏对象:

1。查找X位置:

最终随机X应为:

Min = terrain.terrainData.size.x.

Max = terrain.transform.position.x + terrain.terrainData.size.x.
Min = terrain.transform.position.z;

Max = terrain.transform.position.z + terrain.terrainData.size.z;

2。找到Z位置:

最终随机Z应为:

Min = terrain.terrainData.size.x.

Max = terrain.transform.position.x + terrain.terrainData.size.x.
Min = terrain.transform.position.z;

Max = terrain.transform.position.z + terrain.terrainData.size.z;

3。查找Y位置:

y轴不必是随机的。不过,如果需要,可以将其设置为随机值

它只需要在地形上,这样实例化的对象就不会在地形下

这就是我们的目标。必须使用此功能才能完美生成不在地形下的位置。您需要#1#2的结果才能使用此选项:

 randZ = UnityEngine.Random.Range(Min, Min + Max);
如果要将偏移应用于y轴,此时可以执行此操作

yVal = Terrain.activeTerrain.SampleHeight(new Vector3(randX, 0, randZ));

下面是一个一般的例子。您必须使用此示例来扩展当前代码

yVal = yVal + yOffset;

我注意到您正在创建
Random
类的新实例。不要在Unity的API中这样做。只是用来生成随机数

至于在地形上生成随机游戏对象:

1。查找X位置:

最终随机X应为:

Min = terrain.terrainData.size.x.

Max = terrain.transform.position.x + terrain.terrainData.size.x.
Min = terrain.transform.position.z;

Max = terrain.transform.position.z + terrain.terrainData.size.z;

2。找到Z位置:

最终随机Z应为:

Min = terrain.terrainData.size.x.

Max = terrain.transform.position.x + terrain.terrainData.size.x.
Min = terrain.transform.position.z;

Max = terrain.transform.position.z + terrain.terrainData.size.z;

3。查找Y位置:

y轴不必是随机的。不过,如果需要,可以将其设置为随机值

它只需要在地形上,这样实例化的对象就不会在地形下

这就是我们的目标。必须使用此功能才能完美生成不在地形下的位置。您需要#1#2的结果才能使用此选项:

 randZ = UnityEngine.Random.Range(Min, Min + Max);
如果要将偏移应用于y轴,此时可以执行此操作

yVal = Terrain.activeTerrain.SampleHeight(new Vector3(randX, 0, randZ));

下面是一个一般的例子。您必须使用此示例来扩展当前代码

yVal = yVal + yOffset;

我没有看到地形区域…@MelO'Hagan对,我用地形大小部分更新了我的问题。对不起,我没有看到地形区域…@MelO'Hagan对,我用地形大小部分更新了我的问题。很抱歉