这很难描述,但我觉得应该是可以做到的。
本质上,这就是我所处的位置:
由于地球的物质具有外部法线,因此其自身的物质不会显示在地球的另一侧。然而,由于 Material 的透明度,我看到了地球另一端存在的标记。
如何阻止内容通过 Material 显示?背景是天空盒,是我唯一想通过透明度显示的东西。
感谢任何帮助或建议。
最佳答案
这样做有点棘手:
唯一的方法是:
关闭每座绿色摩天大楼,当它位于“后面”时。
假设您的世界只是以 000 为中心。
那么,如果你仔细想想,那就这么简单......
如果z>0f
,那么您希望绿色摩天大楼不可见。如果是z<0f
您希望它正常显示。
由于这是 Unity,因此您必须以类似于代理的方式工作。所以实际上就是这么简单。制作脚本(伪代码)
Class HideMeIfAwayFromCamera
{
Update()
{
if ( z > 0f ) renderer.enabled = true;
else renderer.enabled = false;
}
}
这可能是最简单也是最好的解决方案。无论如何,我都会先尝试一下。让我们听听它如何为您服务。
考虑到您可能希望将开/关点设置在中途平面之前或之后一点,请尝试一下。
请注意,另一种方法是。您需要使用剪切着色器;为摩天大楼使用完全不同的图层;并为任何基础超出地平线的摩天大楼使用另一个图层;通过这种方式,您可以让它显示任何位于地平线“后面”但隐藏底部的摩天大楼的“顶部”。但它看起来确实太复杂了。我认为最好的结果就是关闭后面的,如上所示。
(还要注意,这不是“物理的”。如果地球是透明的:你应该能够看到后面的摩天大楼。所以你必须尝试一些东西才能看到什么感觉良好。)
关于unity-game-engine - 尽管 Material 是透明的,但仍停止通过对象显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37056137/