Вопрос до боли простой, но меня завел в ступор.
Есть герой, который в конусе перед собой бьет все цели. Так вот как эти цели собственно отловить? Как вариант можно рейкастить, но мне кажется это извращением, 270 рейкестов не есть ок (по 1 на каждый градус).
Есть менее ресурсозатратные идеи?
Ответ
Ну очень же просто! Это SphereOverlap и чек коллизий!
Колдуется сферка, радиус которой увеличивается. Все что попадает в радиус - подходит.
Далее берем две нормали
- первая направлена от 1го юнита ко 2му.
- вторая нормаль - направление атаки 1го юнита
Высчитываем между ними минимальный угол - если он меньше угла атаки - цель подходит.
Смотрите также:
Комментарии
Ну очень же просто! Это SphereOverlap и чек коллизий!
Колдуется сферка, радиус которой увеличивается. Все что попадает в радиус - подходит.
Далее берем две нормали
- первая направлена от 1го юнита ко 2му.
- вторая нормаль - направление атаки 1го юнита
Высчитываем между ними минимальный угол - если он меньше угла атаки - цель подходит.
Насчет сферы идеи хорошая. Получилось еще нагуглить другой способ:
В максе сделать нужную модель, повесить в юнити на нее меш колайдер и получать коллизию с этой модели.
Остается придумать что быстрее.
-
Только что проверил.
Все таки через сферу будет быстрее. Спасибо за подсказку.
Возможность добавлять комментарии была ограничена
CollectableItemData.cs
[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]