如何检查光线投射和表面之间的角度?

时间:2016-08-07 22:33:55

标签: unity3d

我知道如何检查raycas之间的角度(Vector3.Angle(hit.normal,-transform.forward)),但我的问题是它总是返回较小的角度(我知道它在数学上是正确的,它&& #39; s不是我想要的)。我用它来确定我的车应转向哪一侧。这很难解释所以我会用图片: raycast 这两个光线投射都将返回相同的角度,我想要一个45 *和另一个-45 *。实际上我并不需要精确的值,1和-1也会很好(我只需知道侧面,而不是确切的角度)。

1 个答案:

答案 0 :(得分:1)

我不完全确定这是否可以帮助您解决问题,但看看您的示例它可能对您有用:

pic

当您查看修改过的图片时,我添加了向量U并命名了红色向量,其中L(和R)并从墙上指向(点击由垂直线表示的点朝向矩形。向量U是与墙相关联的固定方向向量(因此它不会在运行时更改)。

现在可以LU(或RU),您可以确定光线原点是否位于后面使用点积点前面。

在这个例子中,产生:
Vector3.Dot(L, U) < 0
Vector3.Dot(R, U) > 0

然后,您可以使用此信息来确定角度的符号。