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对,我用地形大小部分更新了我的问题。很抱歉