Unity3D获取对象大小,以便在Vector3坐标中使用

我在3D项目中有一个Unity的plane ,我想要得到它的边界,所以我可以在随机函数中使用它们来获得Vector3坐标。 目前我正在尝试这样的

GameObject地面;

 void Start () { ground = GameObject.Find("Ground"); moveAreaX = ground.GetComponent<Renderer>().bounds.size.x; moveAreaZ = ground.GetComponent<Renderer>().bounds.size.z; Debug.Log ("X Area: " + moveAreaX + ", Z Area: " + moveAreaZ); GetRandomTargetCoords(); } void GetRandomTargetCoords() { targetCoordsX = Random.Range(0f, moveAreaX); targetCoordsZ = Random.Range(0f, moveAreaZ); targetCoords = new Vector3(targetCoordsX, 1.1f, targetCoordsZ); } 

而在控制台,我得到这个:

 X Area: 108.5801, Z Area: 108.5801 

问题是这个bounds.size提供的单位不等于游戏对象的Transform位置的单位,所以游戏对象离开了Plane的边界。

我怎样才能使它有相同的单位进行测量?

如果我理解正确,你想在飞机上放一个随机目标。 但是,你的飞机的尺寸是飞机的“边”,而不是从中心开始。 你想要做的是这样的:

 float scale = 0.1f; float moveAreaX = gameObject.GetComponent<Renderer>().bounds.size.x / 2; float moveAreaZ = gameObject.GetComponent<Renderer>().bounds.size.z / 2; Vector3 center = gameObject.GetComponent<Renderer>().bounds.center; targetCoordsX = center.x + Random.Range(-moveAreaX*scale, moveAreaX*scale); targetCoordsZ = center.z + Random.Range(-moveAreaZ*scale, moveAreaZ*scale); 

你从飞机的中心开始,并从中心开始,加上相应的边除以2的大小。 这样你随机正面和负面的“半边”。 规模是因为游戏的规模不一样的变换。规模和边界(但我认为这实际上取决于你的游戏)。