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都是整型的? 在分割之前将它们转换为浮点,然后得到小数部分。

...