我正在研究一个项目,使用统一5.4。 在这个项目中,块彼此相邻堆叠。
然而,出现了一些恼人的奇怪线条。还有关于android这些 线路比PC上更常出现。 为了便于说明,我添加了图像和视频。 请放大图片,看看我所说的那条线,显然。
任何人都可以提供一个解决方案,以获得这种新生的红色。 提前谢谢。
文献:
阻止对齐代码段:
for (int x = 0; x < xSize; x++)
for (int z = 0; z < zSize; z++)
{
Vector3 pos = new Vector3(x, -layerDepth, z);
InstantiateBlock(pos);
}
答案 0 :(得分:8)
你有对象接缝!
当物体之间存在物理或感知间隙时,会发生这种情况。
这有多种原因。
这可能是因为您将立方体的位置设置为int
,但它们具有浮点尺寸。当相机靠近物体时,其症状通常是没有白色接缝,然后由于浮点不精确而逐渐出现。 More
大多数这些模块似乎与大多数摄像机位置完全对齐。但是从偶然的不幸位置来看,A的位置加上其顶点(0.5,0.5,-0.5)的确切值可能与对象B的位置加上其顶点(-0.5,0.5,-0.5)略有不同。结果是Unity显示了一个微小的间隙,在其中你可以看到立方体A的阴影面。
如果你在纸上3 == 1/3 * 3
考虑以下内容,这在数学上是正确的,但是使用浮点数,1/3 == 0.333333...
以及随后的3 * 0.333333... == 0.999999...
BINGO!对象之间的随机差距!
那怎么解决?使用浮动来计算对象的位置。 new vector3(1,1,1);
应为new vector3(1f,1f,1f);
- 例如。如需进一步阅读,请尝试this SOP。
如果您在对象上使用纹理,请尝试将纹理的环绕模式从包裹更改为限制,或尝试增加纹理padding。
这是阴影中应该真正点亮或不亮的像素的任意模式。
为防止阴影痤疮,可以在阴影贴图中的距离中添加偏移值,以确保边线上的像素确实通过比较,或确保在渲染到阴影贴图时。 source
在Unity中...转到你的光源然后增加Shadow Type > shadow Bias
我建议加倍默认值0.05然后继续直到修正。您不希望将此值设置为max,因为...
不要将偏差值设置得太高,因为游戏对象附近的阴影周围的区域有时会被错误地照亮。这会导致阴影断开,使GameObject看起来好像是在地面上飞行。
答案 1 :(得分:0)
你使用的是不同的块吗?你的问题听起来像块并不完全相互对抗,这会导致你看到下一个块的一侧(这解释了相机Y的变化:你可能会看到更高的一侧更好的一面)。那一面将有不同的光线,并显示为不同/较浅的颜色。要检查这是否是问题,请尝试在编辑器中稍微手动重叠它们,看看问题是否仍然存在。