2017-02-17 90 views
2

我有一个飞机其比例设置为1,1,1。我愿意得到它的开始位置结束位置。世界空间中对象开始的位置是什么,最终位置是什么。 一个简单的方法来完成这项工作是将对象放置在飞机的起点和终点,并获得对象的位置,但我想通过地板只有获取对象在世界空间中的开始和结束位置

我只是试过这个代码,但它并没有在世界空间中的位置。

Debug.Log(floor.GetComponent<MeshRenderer>().bounds.min); 
     Debug.Log(floor.GetComponent<MeshRenderer>().bounds.max); 
     Debug.Log(floor.GetComponent<MeshRenderer>().bounds.center); 
     Debug.Log(floor.GetComponent<MeshRenderer>().bounds.extents); 
+0

您的代码似乎没问题。什么认为是错误的?当你在'bounds.min'和'bounds.max'临时创建一个新的立方体对象时会发生什么?请注意,一个对象的变换可能与中心不同 – Kay

+1

你的意思是平面的开始和结束?一架飞机有4个侧面,你不能仅仅使用,floor.position和添加或减少一半的楼层规模在你正在考虑的方向开始或结束? –

+0

你对网格本身做了什么操作吗?如果是这样,请在打印出界限到控制台之前尝试调用重新计算边界。你还得到了什么结果。 https://docs.unity3d.com/ScriptReference/Mesh.RecalculateBounds.html –

回答

2

如果平面变换与世界一致,Renderer.bounds将只匹配平面的大小。在其他世界,只有没有任何轮换时它才会起作用。

获得平面转角的另一种方法是直接查看网格顶点。这需要先找到拐角处的顶点。忘了那个。

  1. 创建2个新的游戏对象,并把它们放在你的飞机的角落
  2. 家长两个角物体平面物体

Hierarchy

各个角落transform.position将现无论母飞机对象的位置,旋转或缩放如何,都可为您提供世界空间位置。

Example

+0

我不想额外的对象作为问题陈述 –

相关问题