问题从Coords正确阻止

时间:2018-01-14 23:46:32

标签: c# unity3d math unity5

现在我正在尝试一个小体素引擎,但不幸的是我遇到了一个问题。出于某种原因,我似乎无法将世界坐标转换为大块坐标。我目前从世界坐标中获取大块的代码是:

std::string

对我而言似乎很好,但是当我测试它时,我得到了它。

Unity Console

在第3行向下是我显示块的地方。左边是一个光线投射,显示它击中了什么块,右边是代码返回的块。关于我哪里出错的任何想法?如果您需要再查看代码,请告诉我。

1 个答案:

答案 0 :(得分:0)

所以这是愚蠢的事情。当你将一个浮点数转换成int时,它会将它带到最接近0的数字。当你在积极的情况下工作时这很好,但是当你在负数中工作时它会开始弄乱coords。要修复它而不是将浮点数转换为int,我使用了Mathf.FloorToInt。

public Chunk GetChunkByWorldPos(Vector3 pos)
{
    Vector3 chunkPos = new Vector3(Mathf.FloorToInt((pos.x / World.staticChunkSize)), 
        Mathf.FloorToInt((pos.y / World.staticChunkSize)), 
        Mathf.FloorToInt((pos.z / World.staticChunkSize)));
    return GetChunkByPos(chunkPos);
}