【发布时间】:2016-09-29 10:23:27
【问题描述】:
各位开发者:)
我为 RTS 摄像机编写了一个脚本,以防止摄像机离开地形(当玩家使用 WASD/箭头键移动摄像机时,在另一个脚本中找到,未包含在下面)。
如您所见,在下面的代码中,我硬编码了地形的宽度和高度。我希望能够自动检测地形的宽度和高度。
注意:我是 Unity 和 C# 的新手,所以如果你知道答案,请提供完整的代码,而不仅仅是片段,ty :)
public class CameraBounder : MonoBehaviour {
int minXBound = 50;
int maxXBound = 50;
int minZBound = 100;
int maxZBound = 200;
int terrainWidth = 500;
int terrainHeight = 500;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
Debug.Log("X: " + transform.position.x + " Z: " + transform.position.z);
if (transform.position.x > terrainWidth - maxXBound) {
transform.position = new Vector3 ((terrainWidth-maxXBound), transform.position.y, transform.position.z);
}
if (transform.position.x < minXBound) {
transform.position = new Vector3 (minXBound, transform.position.y, transform.position.z);
}
if (transform.position.z > terrainHeight - maxZBound) {
transform.position = new Vector3 (transform.position.x, transform.position.y, (terrainHeight-maxZBound));
}
if (transform.position.z < minZBound) {
transform.position = new Vector3 (transform.position.x, transform.position.y, minZBound);
}
}
}
【问题讨论】:
-
你是否通过脚本自动生成地形?
-
@cj93 不,我手动创建地形。但我希望能够将脚本用于多个场景/关卡,而不必为每个场景更改脚本中的宽度和高度。
-
您尝试过使用 TerrainData.size 吗? docs.unity3d.com/ScriptReference/TerrainData-size.html
-
是的,但我不知道如何使用它。就像我说的,我是新手 :( 您能否提供从 TerrainData 获取地形宽度和高度的代码行,并将其分配给我的自定义变量 terrainWidth 和 terrainHeight?
-
似乎 TerrainData.size.y 可以返回最大高度点。但是,我从来没有使用过它......你也可以尝试一下,看看它返回什么值。