【发布时间】:2015-02-10 07:03:33
【问题描述】:
我正在使用 Unity3D,我的情况如下:
- 我有(至少)3 个游戏对象,A、B 和 C。
- 我知道 A、B 和 C 的位置和旋转。
- 我知道 C 的大小。
我需要从 A 射线投射到 B。这条射线穿过 C,我需要知道 C 内部的线段的长度。使用三角形相似度标准,如果我在 2D 中,我可以得到我想要的然而,空间:
- 我在 3D 空间中。
- 草图中的矩形可以是球体、立方体或平行六面体。
- 我需要使用 raycast 方法而不是 linecast,因为我需要获取有关我击中的实体的更多信息(实际上我使用的是 raycastall 方法)。
- A 和 B 之间可能有不止一个实体(更多 C),我需要获取每个人的段长度。
我做了这个简单的草图来说明我的情况,基本上我需要得到红色段的长度。
我不介意获取 Unity 的代码,我只需要一些有关公式的帮助,一旦我有了它,我就可以自己编写脚本,但是如果 Unity 提供了一种简单的方法来获取它,我会很高兴了解如何去做。
谢谢。
【问题讨论】:
-
我认为使用旋转和位置找到不同几何形状的封闭公式会变得非常复杂。我建议坚持使用光线/线播。此外,quboids 和 spheres 应该由统一有效地处理,如果这部分不是 100% 关键,并且这是您的应用程序一直在做的唯一事情,那么可能很难提高效率。我还没有使用过统一(尚未),但根据this,linecast 也可以返回 raycast 命中类型。否则,你可以投两次,看看效果如何……
标签: math 3d unity3d formula trigonometry