现在我正在尝试一个小体素引擎,但不幸的是我遇到了一个问题。出于某种原因,我似乎无法将世界坐标转换为大块坐标。我目前从世界坐标中获取大块的代码是:
std::string
对我而言似乎很好,但是当我测试它时,我得到了它。
在第3行向下是我显示块的地方。左边是一个光线投射,显示它击中了什么块,右边是代码返回的块。关于我哪里出错的任何想法?如果您需要再查看代码,请告诉我。
答案 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);
}