Показать сообщение отдельно
Старый 30.07.2009, 23:45   #9
SJack
Местный
 
Регистрация: 27.12.2007
Адрес: Харьков
Сообщений: 250
Отправить сообщение для SJack с помощью ICQ Отправить сообщение для SJack с помощью Skype™
По умолчанию

Цитата:
Сообщение от ZloyPetrushkO Посмотреть сообщение
насчет подавления- я тоже аналогичный механизм обдумывал.
кроме как сравнивать вектор на цель( а ет как мне видиться над брать коор-ты и вычислять етот самый вектор- а ето будут фризы) у меня есть идея попробовать сравнивать на параллельность азимут самолета и угол поворота орудия. и только потом уже проверять на причастность к коридору. мое имхо-так будет быстрее
Не, ты не понял. Вектор на цель у нас уже есть. Потому что проверку я предлагаю делать именно в тот момент, когда пушка вычисляет этот самый вектор. Вычислили? Вычислили. А теперь посмотрели, куда эта самая цель летит. Ага, на нас летит. Ну, побежали.
Как-то так. Вся операция усложняется на одно скалярное произведение векторов и парочку сравнений. Быстрее не выйдет, имхо. Конечно, если каждый такт смотреть вектора всех рядомнаходящихся - то это ни в какие ворота.
Собственно, по реализации. Код нацеливания у нас в ArtilleryGeneric.targetGun. Что касается облаков и солнца - я не вчитывался, но поправки на это дело вносятся, там коэффициенты зависят от Mission.curCloudsType(), Mission.curCloudsHeight() и отакой имеется тож if(World.Sun().ToSun.z < -0.15F){...} . Что касается вектора на цель, то его мы считаем в самом конце отута if(!((BulletAimer)gun).FireDirection(point3d1, point3d, vector3d)), собственно vector3d и будет оно самое, его-то и сравнивать с вектором скорости.
SJack вне форума   Ответить с цитированием