c如何将屏幕坐标转换为简单2D游戏的世界坐标



我开始使用这个解决方案,但后来我注意到,当字符位于具有余数的坐标时,它不能正确映射。

首先,我从相机中获得可见范围。然后我得到鼠标的位置,除以块的大小,问题是:我假设屏幕开始时有一个完整的块,但实际上可能有1/4、2/4和3/4的块,屏幕结束时也是如此。

如何以最有效的方式正确执行此转换?

typedef struct {
    float x, y;
} Point;
Point camera_screen_coord_to_game(Camera *camera, int x, int y)
{
    Range range = camera_get_visible(camera, game_clock_ticks());
    int block_size = settings_get_block_size();
    Point game_coord;
    game_coord.x = range.x0 + x / block_size;
    game_coord.y = range.y1 - 1 - y / block_size;
    return game_coord;
}
这可能是因为x、y和block_size都是int吗?在除法之前先把它们铸造成float,就得到了分数部分。

最新更新