我找不到正确的偏移量来获取在模拟假网格上选择的图块。
我在中心偏移的纹理(monogame renderTarget)上绘制网格:
GRID_CENTER_X = (SCREEN_WIDTH / 2) - ((GRID_WIDTH * TILE_WIDTH) / 2) + (TILE_WIDTH / 2)
GRID_CENTER_Y = (SCREEN_HEIGHT / 2) - ((GRID_HEIGHT * TILE_HEIGHT) / 2)
然后我使用此功能移动相机:
public void Move(float SPEED_X, float SPEED_Y)
{
CAMERA_X += (SPEED_X * 10) * DELTA_TIME;
CAMERA_Y += (SPEED_Y * 10) * DELTA_TIME;
DIST_X = CAMERA_X / SPEED_X;
DIST_Y = CAMERA_Y / SPEED_Y;
//Tried to use this for the offsets.. doesnt work
//also tried to divide camera's x & y position by tile size , not working..
}
然后我更新我在上面绘制瓷砖的网格图像:
GRID_X = CAMERA_X + GRID_CENTER_X`;
GRID_Y = CAMERA_Y + GRID_CENTER_Y;
if(CAMERA_X >= TILE_WIDTH * 10 || CAMERA_X <= - TILE_WIDTH * 10) CAMERA_X = 0;
if(CAMERA_Y >= TILE_HEIGHT * 10 || CAMERA_Y <= - TILE_HEIGHT * 10) CAMERA_Y = 0;
它给人一种网格无限的错觉,但我只是把它移回去 一旦到达一定距离,就会到达其前面的位置。
我用这个公式画的瓷砖(Cell2World)
TILE_X = TILE_I * TILE_WIDTH;
TILE_Y = TILE_J * TILE_HEIGHT;
当相机不移动时,瓷砖部分效果很好使用以下公式(World2Cell)
TILE_I = WORLD_X / TILE_WIDTH;
TILE_J = WORLD_Y / TILE_HEIGHT;
以下是我如何将图像放置到光标位置以进行图块选择:
CURSOR_I = CURSOR_X / TILE_WIDTH;
CURSOR_J = CURSOR_Y / TILE_HEIGHT;
CURSOR_X = CURSOR_I * TILE_WIDTH;
CURSOR_Y = CURSOR_J * TILE_HEIGHT;
这基本上是
CURSOR_X = Cell2World(World2Cell(mousePosition)).X;
CURSOR_Y = Cell2World(World2Cell(mousePosition)).Y;
我应该向 World2Cell 添加什么以包括网格/相机偏移等,将光标放在正确的位置以执行图块选择?