[已解决]在无限二维平面上找到一个点的图块索引,分为图块

[SOLVED]Finding Tile Index of a point- on an infinite 2D plane divided into tiles

我正试图将我的游戏世界分成Sectors/tiles。并根据 player/object 的位置确定 player/object 所在的图块。 我没有限制世界大小,所以世界可以是任何大小。磁贴大小已定义且恒定。因此,整个世界被划分为给定尺寸的正方形瓷砖。

示例:如果我将我的世界分成大小相等的正方形图块,比如 300x300。

更多示例输入和输出:

我有下面的代码,它似乎只有在 X/Z 为正时才能正常工作。一旦它位于 X/Z 的负方向,我不确定如何计算位置。

public static Sector GetCurrentSector(Vector3 p_position)
{
    int x = Mathf.FloorToInt(p_position.x / cellSize);
    int z = Mathf.FloorToInt(p_position.z / cellSize);

    return new Sector(x, z);
}

我检查了以下问题,似乎与我有关:

注:我也不知道这个问题叫什么!所以,这让我很难搜索。我的搜索将我带到了多个与圆、半径、圆内点等相关的地方,

我建议您使用 int 而不是 FloorToInt 并使用整数除法:

public static Sector GetCurrentSector(Vector3 p_position)
{
    int x = (int)p_position.x / (int)cellSize;
    int z = (int)p_position.z / (int)cellSize;

    return new Sector(x, z);
}

我的回答不正确,你的方法是正确的使用matf.FloorInt比负数的整数除法更好。