Возможно ли описать плоскую фигуру как область, чтобы ее принял WE? Хочу сделать конусное заклинание, но не нашел функций которые задают такие параметры. Желательно объяснить для Jass :)
P.s. Неужели возможно использование только круглых и прямоугольных областей?

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

^ вот этот тред полная хрень.
from = ... // Вершина конуса
direction = ... // Направление конуса (нормализованное)
width = ... // Ширина конуса в радианах

angle = acos(direction.dot((target.position - from).normalize()))

return angle <= width / 2
A • B = |A| |B| cos(theta)
Соответственно имея нормализованные A и B получаем их скалярное произведение равное косинусу угла между ними. Таким образом мы просто сравниваем направление конуса с направлением от центра конуса к цели.
Отдельно нужно проверить расстояние.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
20
8 лет назад
0
S1nWell, не вижу проблем в создании конусной области.
На плоскости это, вероятно, соответствует сектору - части круга (торт обычно нарезают секторами).
Такая область не будет создана стандартной функцией. Я бы для этого проверял расстояние цели к определенной точке - вершине сектора - и проверял, лежит ли угол, под каким смотрится цель с вершины, в пределах, которые задают сектор.
То есть сектор - это круг + ограничение по углам относительно центра круга. Надеюсь ,ты поймешь, что я пытался объяснить.
Для JASS используй просто сбор юнитов в области определенного радиуса, но проверяй их положение относительно центра.
Кстати, конусным заклинаниям в некотором смысле отвечают заклинания типа CarrionSwarm: там можно настроить начальный радиус области и конечный радиус области, а также длину, на которую летит волна. Так что иногда можно вполне обойтись и переделкой чего-то стандартного в РО.
0
26
8 лет назад
0
2
29
8 лет назад
Отредактирован Doc
2
^ вот этот тред полная хрень.
from = ... // Вершина конуса
direction = ... // Направление конуса (нормализованное)
width = ... // Ширина конуса в радианах

angle = acos(direction.dot((target.position - from).normalize()))

return angle <= width / 2
A • B = |A| |B| cos(theta)
Соответственно имея нормализованные A и B получаем их скалярное произведение равное косинусу угла между ними. Таким образом мы просто сравниваем направление конуса с направлением от центра конуса к цели.
Отдельно нужно проверить расстояние.
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.