在Unity 3d中查找鼠标指针下的角度面

时间:2015-05-10 23:23:45

标签: unity3d

我有一个投影机组件,我需要找到投影纹理所在的角度,以排除垂直面上的投影。

我的投影机位于鼠标指针下方,当它在水平面上时工作正常:

projector texture over a horizontal face

我希望投影机在垂直面上关闭以避免这种不良影响:

projector texture over a vertical face

如果可能的话,我想在着色器代码中执行此操作,以避免垂直投影图像,即使光标位于水平面的角落和部分"熄灭"在垂直的脸上。

我在C#中找到了这个解决方案:

if (Physics.Raycast(MouseRay,out hitInfo)){

    if(hitInfo.normal.y>0) {
        // draw
    } else {
        // not draw
    }
}

但只有它适用于曲面,而不适用于面立方体。

我该如何正确地做到这一点?

1 个答案:

答案 0 :(得分:0)

通常他们会使用TGA透明度在四边形上使用图像,TGA透明度将自身旋转到对象中间对齐的面,使用光线找到顶点并使其成为绝对正常。

其他方法可能会非常棘手,可能使用贴花......如果你使用着色器来完成它,那将花费很多时间......这是一个解决问题而不是按重要性顺序排序的情况快速发展。从技术上讲,你可以在你正在使用的任何物体上投射体积纹理......这样你可以添加从空间中的一个点投射到物体上的禁止圆,作为一个数学公式,它需要一段时间才能完成,检查出来体积纹理,我写了一些,在你的情况下,它需要鼠标pos发送到纹理和数学,以添加透明区域和红色区域到纹理。需要一整天。

当你将指针改变到不同的脸上时,有一个平坦的圆圈翻转是很好的,它看起来就像一张物理卡,它更容易编码,10分钟而不是很多小时。

相关问题