如何制作一个完美的立方体

时间:2019-05-27 12:05:23

标签: c# unity3d

在Unity中,我创建一个比例为1,1,1的多维数据集。排名是0,1,0。 然后我将其放置在15,1,5000的平面上方。位置是0,0,0。 我检查了立方体在Y轴上是否低于1,这对我而言意味着立方体落在平面上。我可以通过向左或向右移动来控制此多维数据集。如果我向左走,那没有问题。如果我向右走,我的位置将变为0.9999998〜。即使多维数据集仍在飞机上,这也使我的跌落检查成为真。不知何故,该多维数据集似乎不是一个完美的多维数据集。希望有人能启发我为什么会这样。谢谢!

1 个答案:

答案 0 :(得分:3)

这可能不是您想要的答案,但是-用不好的话来说-计算机的算术是有限的(搜索floating point arithmetic)。因此,您要查找的“完美多维数据集”并不存在于计算机可以执行的有限表示形式中。 而且,Unity具有自己的物理引擎(与所有物理引擎一样),可以在每次操作(平移,旋转,缩放)期间近似现实世界的演算。

唯一可以克服此问题的方法是通过比较而不是精确值(0,1),而是使用范围。 要在场景的坐标系中保持“顺序”,您还可以-以固定的间隔-“调整”您的值,例如,如果坐标值介于0.95和1.05之间,则手动将其设置为1(使用当然,您的世界的坐标系)。

相关注释:在您的评论中,您说:“ 但是我的意思是,为什么多维数据集看起来不是完美的1x1x1。某种程度上就像1x1x0.9999998 ”。事实是,像Unity这样的VR系统不会在内存中保留对象的大小,而是保留其顶点的坐标。您可能会感觉到对象的尺寸由于平移而发生了变化,但是从严格的角度来看,这并不是正确的:这只是顶点的X,Y,Z值的有限近似值。