Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Трассировка
tonline_kms65 Дата: Четверг, 30.03.2017, 03:48:39 | Сообщение # 1
Сообщений: 215
Репутация: 3 [ +/- ]
Все здравствуйте.
Меня давно мучает такой вопрос - как ограничить трассировку видом только вперед, т.е. то что сзади что бы трассировка не видела.
А то у меня ракеты, если противник сзади появляется, стартуют назад. Как то нереально смотрится, да и Дрону достается, его ракета цепляет - взрывается, наносит ущерб. Там ограничение идет 4-х угольником (min, max), и я так понимаю вдоль всей видимой карты.

Вот то что я использую:
Код
float min[3] = {-2.0, -2.0, -2.0};
float max[3] = {2.0, 2.0, 2.0};
TR_TraceHullFilter(rocket, enemy, min, max, MASK_SOLID, conditions, rocket);

здесь учитывается позиция от стрелка до противника, очевидно что отсюда и косяк. Противник может быть с любой стороны.

Если перейти на это:
Код
TR_TraceRayFilter(pos, angles, MASK_SOLID, RayType_Infinite, conditions, ent);

этот вариант учитывает позицию стрелка и угол направления "взгляда", возможно он лучше. Кто сталкивался всерьёз - отпишитесь.

Добавлено (30.03.2017, 03:48:39)
---------------------------------------------
Ни у кого никаких мыслей? Может быть я вопрос не правильно (непонятно) задал?

Я думаю, что все-таки этот вариант лучше, но не могу никак сообразить как его применить.
Код
TR_TraceRayFilter(pos, angles, MASK_SOLID, RayType_Infinite, conditions, ent);


У меня такие мысли:
Для начала - в цикле нахожу противников, получаю их координаты. Все противники есть. Кто то виден, кто то нет. Сейчас я делаю трассировку от ракеты до ближайшего видимого противника по их координатам.
Код
TR_TraceHullFilter(ent_pos, enemy_pos, tunnel_min, tunnel_max, MASK_SOLID, conditions, ent);

Видимо нужно изменить не координаты противников, а направление на ближайшего противника вектором (angles). Если там противника не окажется (грохнули например) продолжаем движение к следующему ближайшему противнику опять же по вектору.
Код
TR_TraceRayFilter(pos, angles, MASK_SOLID, RayType_Infinite, conditions, ent);

Как то так. Пока не могу мысли сложить, практикой не могу - на работе..


Сообщение отредактировал tonline_kms65 - Четверг, 30.03.2017, 04:05:39
 
  • Страница 1 из 1
  • 1
Поиск: