Показать сообщение отдельно
Старый 16.02.2023, 11:38   #647
Dimas1999
Местный
 
Аватар для Dimas1999
 
Регистрация: 18.11.2015
Адрес: Анапа
Сообщений: 1,644
По умолчанию

1. Крыльевые топливные баки с +- историчными шкалами, у разных моделей были разные шкалы.
2. Благодаря Васе заметил баг стандартной игры у некоторых Яков, дым и пламя из патрубков выходит ниже самих патрубков, надо будет хуки передвинуть немного.
3. Разобраться с коллизиями. Почему-то вписанные коллизии не работают, где-то я их не трогал они там тоже не работают. Сравнивал построчечно меши, отличий нет, почти никаких.
Как это проявляется?
Старт на земле, я на Ил-2 или ТБ-3, а Як за мной. С места стрелка начинаю бстрелять по крыльям и движку. Каждый раз одинаковые условия. Если с коллизией всё хорошо, то при попадании по крылу сначала баки протекают, могут и вспыхнуть, а потом отваливаются. Если с коллизией плохо, то крыло тупо отпиливается. Движок может заглохнуть, задымить или загореться, а если с коллизией проблемы, то после нескольких попаданий из 12,7 происходит взрыв.
П̶о̶к̶а̶ ̶н̶а̶ш̶ё̶л̶ ̶т̶а̶к̶у̶ю̶ ̶з̶а̶в̶и̶с̶и̶м̶о̶с̶т̶ь̶:̶
̶N̶a̶m̶e̶ ̶x̶x̶t̶a̶n̶k̶2̶ ̶-̶ ̶к̶о̶л̶л̶и̶з̶и̶я̶ ̶н̶е̶ ̶р̶а̶б̶о̶т̶а̶е̶т̶;̶
̶N̶a̶m̶e̶ ̶x̶x̶t̶a̶n̶k̶2̶_̶ ̶-̶ ̶п̶о̶с̶л̶е̶ ̶2̶ ̶е̶с̶т̶ь̶ ̶п̶р̶о̶б̶е̶л̶,̶ ̶к̶о̶л̶л̶и̶з̶и̶я̶ ̶р̶а̶б̶о̶т̶а̶е̶т̶.̶
Вот где собака порылась:
Name xxtank2 - коллизия работает;
Name .xxtank2 - коллизия не работает.
В какой-то момент затесалась точка и она всё поломала.
Кажется, я понял в какой момент всё поломалось. В hier.him некоторые коллижены записаны с точкой:
[Keel1_D0]
Mesh Keel1_D0
Parent Tail1_D0
Separable
Attaching 1 0 0 0 1 0 0 0 1 -5.1339 -0.00817 1.45097
CollisionObject xkeel1
CollisionObject .xxspark1
CollisionObject .xxspark2
Вероятно при пересохранении меша из hier.him переписались такие имена коллижена. В бинарных мешах из архивов игры коллижены имеют незашифрованное имя и их там видно, точек нет.
HitBone по всей видимости, тоже ожидает увидеть имя коллижена без точки.
Код:
                if(s.startsWith("xxspark") && World.Rnd().nextFloat() < 0.5F && getEnergyPastArmor((double)(6.8F * World.Rnd().nextFloat(1.0F, 1.5F)) / (Math.abs(Aircraft.v1.x) + 9.9999997473787516E-005D), shot) > 0.0F)
                {
                    Aircraft.debugprintln(this, "*** Keel Spars Damaged..");
                    nextDMGLevels(1, 2, "Keel1_D" + chunkDamageVisible("Keel1"), shot.initiator);
Интересно мнение знающих людей, почему в коде и в меше имя коллижена без точки, а в хер.хим оно идёт с точкой?

+++++++++++++++++++++++++++++++++++++++++++++++

Пересобрал все планеры, меши без коллизий заменил на такие же из архивов игры с коллизиями, новым мешам прописал коллизии по образцу стандартных. Долго мучался с Як-3 от Барнеси, несколько раз перевписывал коллизии в крылья, пересобирал хер.хим, убедился, что хитбон у него из суперкласса Як и все имена коллижинов совпадают. Но всё время при попаданию по левому крылу происходила утечка/задымление/пожар правого бака, а при попадании по правому крылу ничего не происходило. Оказалось всё просто, часть хуков в крыле отсутствовала, а какие-то были с неправильными именами.

Последний раз редактировалось Dimas1999; 16.02.2023 в 18:40.
Dimas1999 на форуме   Ответить с цитированием