Как создать «ракету-перехватчик» для игры?

Несколько пулевых точек из предыдущего ответа :

  • Самое главное: относится ли адрес отправителя («От») к домену, который выполняется на сервере вы отправляете E-Mail? Если нет, сделайте это так. Никогда не используйте адреса отправителя, такие как xxx@gmail.com. Пользователь reply-to, если вам нужны ответы, чтобы получить другой адрес.
  • Является ли ваш сервер черным списком (например, проверьте IP на spamhaus.org)? Это возможность, когда вы находитесь на совместном хостинге, когда соседи ведут себя плохо.
  • Отправлены ли письма фильтром спама? Откройте учетную запись с freemailer с папкой спама и узнайте. Также попробуйте отправить почту на адрес без какой-либо фильтрации спама.
  • Возможно, вам нужен пятый параметр «-f» почты () для добавления адреса отправителя? (См. Команду mail () в руководстве по PHP)
  • Если у вас есть доступ к файлам журналов, проверьте их, конечно.
  • Вы проверяете адрес «from:» для возможных отсканировать письма («Возвращено отправителю»)? Вы также можете настроить отдельный адрес «error-to».

13
задан knittl 19 October 2009 в 13:18
поделиться

5 ответов

То, что вы предлагаете, называется "Командным наведением", но есть более простой и лучший способ.

Обычно настоящие ракеты делают это (не все одинаковы) используют система называется пропорциональная навигация. Это означает, что ракета "поворачивается" в том же направлении, что и линия прямой видимости (LOS) между ракетой и целью, со скоростью поворота, "пропорциональной" скорости LOS ... Это будет делать то, что вы спрашивая, поскольку, когда скорость LOS равна нулю, вы находитесь на курсе столкновения.

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

Например, если вы используете константу пропорциональности, равную 2, и точка прямой видимости движется вправо со скоростью 2 град / сек, поверните ракету вправо со скоростью 4 град / сек. LOS влево со скоростью 6 град / сек, ракета влево со скоростью 12 град / сек ...

В 3-й задаче идентично, за исключением «Изменение скорости LOS» (и результирующей скорости поворота ракеты). вектор, то есть он имеет не только величину, но и направление (поворачиваю ли я ракету влево, вправо, вверх или вниз или на 30 градусов выше горизонтали вправо и т. д.? ... Представьте себе, как пилот ракеты, где вы бы «установили крылья», чтобы применить подъемную силу ...

Ракеты с радиолокационным наведением, которые «знают» скорость закрытия. отрегулируйте константу пропорциональности на основе закрытия (чем выше закрытие, тем быстрее ракета пытается повернуться ), Другие ракеты (например, Sidewinders), которые не знают закрытия, используют постоянное заранее заданное значение пропорциональности). FWIW, сайдвиндеры AIM-9 времен Вьетнама использовали константу пропорциональности 4.

20
ответ дан 1 December 2019 в 18:49
поделиться

Взгляните на OpenSteer . В нем есть код для решения подобных проблем. Посмотрите на 'steerForSeek' или 'steerForPursuit'.

5
ответ дан 1 December 2019 в 18:49
поделиться

Я уже использовал эту статью CodeProject раньше - в ней есть несколько действительно хороших анимаций, объясняющих математику.

"Математика наведения и моделирования ракеты: От исчисления к формуле четвертой степени »: http://www.codeproject.com/KB/recipes/Missile_Guidance_System.aspx

(также, скрытая в комментариях внизу этой статьи ссылка на некоторый код C ++, который выполняет то же самое задача из Unreal wiki)

15
ответ дан 1 December 2019 в 18:49
поделиться

Учитывали ли вы отрицательные отзывы о недавнем изменении пеленга по мере изменения времени?

Детали оставлены в качестве упражнения.

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

Нужны подробности?

Решение в двухмерном пространстве для простоты обозначений. Примем \ vec {m} в качестве местоположения ракеты, а вектор \ vec {t} - в качестве местоположения цели. Текущий курс по направлению движения за последнюю единицу времени: \ vec {h} = \ bar {\ vec {m} _i - \ vec {m} _i-1}} . Пусть r будет нормализованным вектором между ракетой и целью: \ vec {r} = \ bar {\ vec {t} - \ vec {m}} . Пеленг: b = \ vec {r} \ dot \ vec {h} Вычислить азимут в каждый момент времени и его изменение, а также изменить курс, чтобы минимизировать это количество.

Математика: harrier в 3d из-за необходимости находить плоскость действия на каждом шаге, но процесс тот же.

1
ответ дан 1 December 2019 в 18:49
поделиться

Вы захотите интерполировать траекторию как цели, так и ракеты как функцию времени. Затем найдите моменты времени, когда координаты объектов находятся в пределах некоторой допустимой ошибки.

0
ответ дан 1 December 2019 в 18:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: