Unity3D -体素网格-错误的一面渲染(c#代码)

本文关键字:代码 网格 错误 Unity3D | 更新日期: 2023-09-27 18:05:37

我目前正在制作体素游戏(不是Minecraft的另一个副本),但我有渲染问题。

图片1+2(我没有足够的信誉来发布图片和超过2个链接)

我在我认为是边缘的地方(用手)画了红线,因为我觉得我可以看穿上面的脸。

第二张图片是同样的问题与水(我认为它是由相同的问题)。

我使用AlexStv的体素教程(我不能发布链接,因为低声誉)。我不能问他/她的帮助,因为我目前只使用一小部分教程的代码。

我在这里上传了我的代码,但请不要在其他地方使用它。我尽可能简单地编写代码,所以我相信每个Unity3D c#程序员/编码员都能读懂。

我今天认识到水的这个问题(然后我从第一张图中找到了问题)。

最后我不得不说,我在互联网上的某个地方找到了着色器(我修改了它用于我的使用,但我不理解着色器的语言)。

PS:我没有尝试Unity答案,因为我使用过一次,他们没有帮助我(并标记我的问题为重复)。

Unity3D -体素网格-错误的一面渲染(c#代码)

看来你的问题是由使用透明着色器对你的不透明地形块造成的。

这在Unity(和大多数引擎)中经常发生,当透明网格渲染在其他透明对象或自身之上时。你需要做的是将水分离到它自己的网格渲染器,并确保非透明地形块使用非透明着色器。这也将提高性能,因为透明着色器可能是昂贵的。如果水不是平坦的,你可能仍然会遇到水(或其他使用透明着色器的块)上的重叠问题。我建议你看看这篇文章,它可能会有所帮助。然而,这是透明着色器的一个常见问题。