Math Unity3D中实体内线段的长度

Math Unity3D中实体内线段的长度,math,3d,unity3d,formula,trigonometry,Math,3d,Unity3d,Formula,Trigonometry,我在Unity3D工作,我的处境如下: 我有(至少)3个游戏对象,A、B和C 我知道A,B和C的位置和旋转 我知道C的大小 我需要从A到B进行光线投射。这条光线穿过C,我需要知道C内线段的长度。使用三角形相似性标准,如果我在2D空间,我可以得到我想要的,但是: 我在一个3D空间里 草图中的矩形可以是球体、立方体或平行六面体 我需要使用光线投射方法而不是线投射,因为我需要获得更多关于我命中的实体的信息(实际上我使用的是光线投射方法) 在A和B之间可能有多个实体(多个Cs),我需要得到每个人的

我在Unity3D工作,我的处境如下:

  • 我有(至少)3个游戏对象,A、B和C
  • 我知道A,B和C的位置和旋转
  • 我知道C的大小
我需要从A到B进行光线投射。这条光线穿过C,我需要知道C内线段的长度。使用三角形相似性标准,如果我在2D空间,我可以得到我想要的,但是:

  • 我在一个3D空间里
  • 草图中的矩形可以是球体、立方体或平行六面体
  • 我需要使用光线投射方法而不是线投射,因为我需要获得更多关于我命中的实体的信息(实际上我使用的是光线投射方法)
  • 在A和B之间可能有多个实体(多个Cs),我需要得到每个人的段长度
我做了这个简单的草图来说明我的情况,基本上我需要得到红色部分的长度

我不介意获得Unity的代码,我只是需要一些公式方面的帮助,一旦我有了它,我可以自己编写脚本,但是如果Unity提供了一个简单的方法来获得它,我会很高兴了解如何做到这一点

多谢各位


我可能没有正确理解这一点,因此这可能是不正确的。你能不能先用它,然后得到物体C的at和。用两个点作为矢量,你可以从另一个点中减去一个,或者使用。

我认为,用旋转和位置来找到不同几何体的闭合公式会非常复杂。我建议坚持光线/线投射。此外,Quboid和spheres应该由unity有效地处理,如果这部分不是100%关键的,那么效率可能很难提高,而这是你的应用程序一直在做的唯一一件事。我还没有使用unity(现在),但根据linecast,还可以返回一个raycast命中类型。否则,你可以投两次,看看它的表现如何…谢谢你的回答!你能再解释一下吗?阅读Unity文档,光线投射似乎不能触发OnTiggerEnter/Exit回调。读了你写的东西后,我想到的是,我可以从一个不可见/透明的游戏对象发射到B,这将触发C上脚本中的上述回调,这样应该可以工作,但我不会在这里使用任何光线投射。我遗漏了什么吗?
物理学。光线投射应该能够触发对撞机。你的解释正是我的意思,除了它不是一个“看不见/透明的游戏对象”,而是一个光线投射。但是,如果我对光线投射触发器的理解有误,那么你可以做的就是检查光线投射是否命中了什么。如果是,并且某个东西是对象C,那么获取hit.point信息并以相同的方式使用它。我链接的文档有示例代码,这应该是一个很好的起点。再次感谢,我明天会尝试,我会让你知道的。