【问题标题】:Get an object's start and end position in world space获取对象在世界空间中的开始和结束位置
【发布时间】:2017-02-17 18:09:29
【问题描述】:

我有一个比例设置为 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);

【问题讨论】:

  • 您的代码似乎没问题。认为有什么问题?当您在bounds.minbounds.max 临时创建一个新的立方体对象时会发生什么注意,对象的变换可能与中心不同
  • 飞机的起点和终点是什么意思?一个平面有 4 个边,你不能只使用 floor.position 并在你考虑开始或结束的方向上添加或减去一半的楼层比例吗?
  • 您是否对网格本身进行任何操作?如果是这样,请在将边界打印到控制台之前尝试调用重新计算边界。还有你得到什么结果。 docs.unity3d.com/ScriptReference/Mesh.RecalculateBounds.html

标签: c# unity3d


【解决方案1】:

如果平面变换与世界对齐,Renderer.bounds 只会匹配平面的大小。在其他世界中,它只有在没有任何旋转的情况下才会起作用。

获取平面角的另一种方法是直接查看网格顶点。这将需要首先找到拐角处的顶点。算了。

  1. 创建 2 个新游戏对象并将它们放在飞机的角落
  2. 将两个角对象作为平面对象的父对象

每个角 transform.position 现在将为您提供世界空间位置,而不管父平面对象的位置、旋转或缩放。

【讨论】:

  • 我不想要问题所述的额外对象
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-16
  • 1970-01-01
  • 1970-01-01
  • 2013-02-12
  • 1970-01-01
  • 1970-01-01
  • 2019-10-01
相关资源
最近更新 更多