unity 浮点数的不精确引发的地砖缝隙


unity中,大多数时候,都需要用 float 类型,


与 int 类型不同, float 类型在进行计算的时候,会有误差,


或多或少。


有一个问题,就是误差是会累积的,


假如,一次误差 0.001是无伤大雅的,


但是,累积到 0.1的时候,可能,就会出现问题,


最直观的情况,就是 地图的拼接,


大多地图都是由地块 ,一块一块拼接而成,


假如,两个地块之间的误差,仅仅只有 0.1而已,


但是,从画面上,很有可能,直接就能看出 接缝,


此时,就是穿帮了。


可是,float 是无法真正的精确的,误差是一定会存在的,


那么,怎么办呢?


办法就是尽可能的减少误差。


假如,


有 A 和 B 两个物体,


都在地图上,一个坐标是 (0,0,1),


一个坐标是 (0,0,2)


假如他们的位置是相对静止的,


那么,当画面动起来时,


我们可能让A 和 B 的都加上同一个偏移量,


但是,这不是最好的办法,这么做,误差仍然还会累积,


有一个办法,可以让误差不再累积,


B相对于 A 的坐标是 固定的,


所以,让 A 来移动, B 动态获取 A的坐标,再加上相对位置的坐标,


就变成了,即使 A 有误差累积,但是, B 相对于 A 的位置,始终都是固定的,


两个地砖之间,相对的位置不发生变化,那么,地砖之间接缝的问题,就不会出现了。




你可能感兴趣的:(unity)