【发布时间】:2022-01-09 10:58:57
【问题描述】:
我正在尝试沿对象面进行光线投射,以便在由对象制成的容器中创建液体表面的网格,无论其旋转如何。 目前我正在使用 X 和 Z 进行 transform.up/right/forward,但将 Y 设置为 0 作为光线投射的方向。这似乎工作单位对象在多个轴上旋转。
您可以在这里看到绿色光线投射的方向不是沿着脸部。我认为解决方案可能与获取我忽略的 y 值并以某种方式将其应用于 x 和 z 有关。
这是一个概念,玩家将使用原始碰撞器构建自己的容器,因此无论对象旋转如何,它都能正常工作。
【问题讨论】:
-
你已经尝试过什么代码?您是否已经有办法计算您感兴趣的面部的法线?
-
你能更详细地描述一下“沿对象面投射光线”的意思吗?
-
@NSJacob1 基本上沿对象变换进行光线投射,同时使光线始终是水平的(在世界空间中)。
-
@Ruzihm 到目前为止我所尝试的是为每个方向制作射线的方向
Vector3(object.transform.right.x,0 ,object.transform.right.z)等等。它一直有效,直到您在所有 3 个轴上旋转对象。我可以从光线投射命中获得法线,因为光线的原点是从光线撞击物体的接触点获得的。 -
所以...只是为了确保我理解...您正在寻找位于水平平面和对象表面的向量?
标签: c# unity3d rotation raycasting direction