Всех приветствую, сейчас работаю над системой турелей для своего проекта, вроде всё прекрасно, но есть одна очень ужасная проблема. В общем, турель должна запускать стрелы/файерболы/снежки в мобов. Но сделать так, чтобы стрелы не попадали в игрока не получилось.
Турели работают на повороте взгляда стенда на сущность и последующем векторном рейкасте.
Так вот, придумал я двухфазную систему защиты от выстрела в игрока:
- Доп. рейкаст на positioned, который после вычисления вектора и перед спавном стрелы в каждой точке луча проверяет игроков поблизости (радиус 3 блока, увеличение до 4 не сильно меняет ситуацию, а играбельность очень сильно уменьшает, т.к нужно слишком далеко отходить от турели и от противников), ну и блоки, заодно, чтобы турель не стреляла в стену, если моб находится за ней. (Почему не перед вычислением вектора? - Появляется существенная задержка, что в десятки раз увеличивает шанс попадания снаряда в игрока)
- Ну и "Вторая фаза" - это тупо цикл, который относительно игрока в радиусе (5! блоков(Тож. не оч. нормально)) убивает эти самые стрелы/файерболы/снежки 20 раз в секунду. (Но у некоторых турелей множитель велик, и снаряды преодолевают расстояние за 1-2 тика, так что это спасает далеко не всегда).
Пробовал делать и третью фазу: ещё один pos-рейкаст, но уже после спавна стрелы (на случай большой задержки, пролага), но от него толку вообще ноль, лишняя нагрузка.
Стрелы хоть и редко, но попадают в игрока, но даже одна стрела - фатальна, ведь есть турели-снайперы, которые с одного выстрела положат игрока, желательно избежать этого ПОЛНОСТЬЮ.
Есть ли предложения, как лучше организовать защиту? Можно ли сделать так, чтобы стрела/файербол дамажили только сущности с опр. тегом? Буду очень благодарен.