我开始使用这个解决方案,但后来我注意到当角色处于与余数的坐标时,它无法正确映射。
首先,我从相机获得可见范围。然后我得到鼠标位置并除以块大小,这是问题所在:我假设在屏幕的开始处有一个整块,但实际上可能有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;
}
答案 0 :(得分:1)
可能是因为x,y和block_size都是整数?在分割之前将它们抛向浮动状态,然后得到小数部分。