Я делаю изометрическую игру, и я хотел бы иметь возможность определять выбранную плитку по положению мыши.
Я делал это прежде, чем использовать обычные плитки, но изометрия намного сложнее. У меня было много попыток сделать это раньше, и я добился умеренного успеха, хотя на мой код было не приятно смотреть. И я представляю, что кто-то, увидевший код, подумал бы, что я просто «подгоняю его» или «грубо насилую».
Мои предыдущие попытки выглядят примерно так.
public static Vector2 ToIsometric( int x , int y )
{
float selectedTileX = ( y * 32.0f ) + ( x * 16.0f );
float selectedTileY = ( y * 16.0f / 2 ) - ( x * 16.0f / 2 );
return new Vector2 ( selectedTileX , selectedTileY );
}
Где X и Y представляют положение мыши на экране. 16.0f представляет высоту каждой плитки, а 32.0f представляет ширину каждой плитки. На приведенном ниже рисунке не используются эти значения, но, надеюсь, это поможет объяснить мою цель определения индекса зазубренной изометрической плитки.