Применение математики для расчета площади зубчатого изометрического квадрата - PullRequest
0 голосов
/ 13 марта 2019

Я делаю изометрическую игру, и я хотел бы иметь возможность определять выбранную плитку по положению мыши.

Я делал это прежде, чем использовать обычные плитки, но изометрия намного сложнее. У меня было много попыток сделать это раньше, и я добился умеренного успеха, хотя на мой код было не приятно смотреть. И я представляю, что кто-то, увидевший код, подумал бы, что я просто «подгоняю его» или «грубо насилую».

Мои предыдущие попытки выглядят примерно так.

    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 представляет ширину каждой плитки. На приведенном ниже рисунке не используются эти значения, но, надеюсь, это поможет объяснить мою цель определения индекса зазубренной изометрической плитки.

enter image description here

...