Теперь я знаю, что этот вопрос задан и ответил несколько сотен раз на этом веб-сайте и многих других, но я не могу найти объяснения, почему работают вычисления, и как я могу реально изменить это для моих нужд.World point to Isometric point - Нужна помощь в понимании
Это моя текущая функция:
//Converts X, Y from the 2D World to a Point in the Isometric Grid
public static Vector2 WorldToIsometric(float x, float y, int scale)
{
Vector2 point = new Vector2(x, y);
Vector2 iso_point = new Vector2(point.x, point.y);
float half_scale = scale/2;
iso_point.x = point.x - (point.y * 2) + half_scale;
iso_point.y = point.x + (point.y * 2) - half_scale;
iso_point.x /= scale;
iso_point.y /= scale;
iso_point.x = Mathf.Floor (iso_point.x);
iso_point.y = Mathf.Floor (iso_point.y);
return iso_point;
}
Ключ:
x = mouse x in world
y = mouse y in world
scale = width of isometric tile
point = mouse point in world
iso_point = mouse point on isometric grid
То, что я хочу, выход выглядеть следующим образом:
Что выход на самом деле выглядит :
Я просто не могу обернуть мою голову вокруг концепции изменения кода, я, вероятно, был на это ушло давно и было слишком много кофе, но все, что я могу изменить это просто не похоже на работу как я думал.
Не стесняйтесь связывать подробный учебник о том, как он работает математически, но я не могу найти ничего, что действительно поможет мне понять, как изменить код.
Приветствия заранее
Я собираюсь дать это испытание, это очень поздно, и я имею работали над этим так долго, но это si полное объяснение делает полный смысл ... читать сложные математические объяснения до сих пор – pathurs
совершенным, я, наконец, понимаю в своем мозгу, как все это работает – pathurs