Короче, герой кастит спелл.
Нужно определить точку у границы карты относительно его спины.
Т. е., допустим, стоит он в центре карты и смотрит влево. Условно проводим от его спины прямую линию до границы карты - вот на самой границе и должна определиться точка, она получится на границе карты справа в центре.
Думаю, примерно понятно, что хочу сказать, перед сном мысли традиционно путаются.
Как можно рассчитать такую точку в любом случае, где бы герой ни стоял?
Ну, допустим, взять facing - 180, текущую позицию, а дальше? Тут главный вопрос, который интересует.
Допустим, возьму я p - позиция героя; p2 - это p offset by 999999 towards facing-180 degrees.
Если это самое 999999 выйдет за границы карты, оно "сгладится" и точка таки отметится на границе?
Или просто черт знает что получится?

Принятый ответ

Мысли тоже путаются, придумал вот что: смещать не на 999999, а понемногу, а при смещении проверять, находится ли координаты смещения в области (вся карта). Если находятся, то сместить на них точку и проверять ещё раз, если нет - то не смещать точку, она и будет у границы карты.
2
18
7 лет назад
2
Мысли тоже путаются, придумал вот что: смещать не на 999999, а понемногу, а при смещении проверять, находится ли координаты смещения в области (вся карта). Если находятся, то сместить на них точку и проверять ещё раз, если нет - то не смещать точку, она и будет у границы карты.
Принятый ответ
0
20
7 лет назад
0
нужно знать границы карты, и постоянно двигать точку периодиком, сверяя её координаты
как только она на границе - перестаем двигать
0
8
7 лет назад
0
Можно для каждой четверти вычислять его, например если угол <90 то берем расстояние от правого угла и этот угол, и угол 90 это два угла и сторона, можно по теореме синусов найти расстояние.
0
30
7 лет назад
Отредактирован Clamp
0
Через использование полярных координат находятся координаты точки, лежащей на прямой, вдоль которой смотрит юнит таким образом, чтобы эта точка находилась за его спиной. Используя полученную пару координат и координаты юнита, можно найти численные коэффициенты функции прямой (y = kx + b; x = (y-b)/k, где k, b - численные коэффициенты). После этого остаётся только подставить min/max X/Y в полученные фунции и определить точки пересечения, лежащие в пределах карты (через сравнение координат).
0
21
7 лет назад
0
Clamp, боюсь, мне будет трудно самостоятельно определить формулу. Ладно, спасибо всем за ответы, думаю, так или иначе разберусь, когда придёт время делать (проверю разные способы и определю, что что даёт и что лучше).
2
18
7 лет назад
2
ssbbssc, ну это я и имел в виду)
0
30
7 лет назад
0
боюсь, мне будет трудно самостоятельно определить формулу
Школьного уровня тригонометрии и базового уровня векторов для этого будет более, чем достаточно.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.