Показать сообщение отдельно
Старый 17.02.2023, 04:56   #654
Vasya
Звичайна людина на Землі
 
Аватар для Vasya
 
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,320
Сообщение

Цитата:
Сообщение от Dimas1999 Посмотреть сообщение
.............................
Так же выкладываю очередную альфу, здесь всё, что готово на данный час.
https://drive.google.com/file/d/1f_C...usp=share_link
...............
Основные изменения:
По возможности заменены меши без коллизий на меши с коллизиями, где нет возможности, коллизии вписаны вручную. Теперь у самолётов должны быть разнообразные поломки.
........................
Так же пока смотрел модели и код вот что вспомнил. Вроде у линейки Яков нет визуального дымления маслорадиатора при его повреждении. В 3д есть его коллизии, к коде тоже что-то есть. Есть идея на потом попробовать реализовать это по образцу других самолётов.
Спасибо Большое за труд!
У меня в основном классе Яков есть код для радиатора и более "правильный" код для баков.
Код:
            if(s.startsWith("xxeng1oil"))
            {
                ((FlightModelMain) (super.FM)).AS.hitOil(shot.initiator, 0);
                Aircraft.debugprintln(this, "*** Engine Module: Oil Radiator Hit..");
            } else
            if(s.endsWith("feed"))
            {
                if(getEnergyPastArmor(3.2F, shot) > 0.0F && World.Rnd().nextFloat() < 0.5F && ((FlightModelMain) (super.FM)).EI.engines[0].getPowerOutput() > 0.7F)
                {
                    ((FlightModelMain) (super.FM)).AS.hitEngine(shot.initiator, 0, 100);
                    Aircraft.debugprintln(this, "*** Engine Module: Pressurized Fuel Line Pierced, Fuel Flamed..");
                }
            } else
            if(s.startsWith("xxoiltank"))
            {
                if(getEnergyPastArmor(0.25F, shot) > 0.0F && World.Rnd().nextFloat() < 0.125F)
                {
                    ((FlightModelMain) (super.FM)).AS.hitOil(shot.initiator, 0);
                    getEnergyPastArmor(0.22F, shot);
                    debuggunnery("Engine Module: Oil Tank Pierced..");
                }
                return;
            }
            if(s.startsWith("xxtank"))
            {
                int k = s.charAt(6) - 49;
                if(getEnergyPastArmor(2.2F, shot) > 0.0F && World.Rnd().nextFloat() < 0.45F)
                {
                    if(((FlightModelMain) (super.FM)).AS.astateTankStates[k] == 0)
                    {
                        debuggunnery("Fuel Tank (" + k + "): Pierced..");
                        ((FlightModelMain) (super.FM)).AS.hitTank(shot.initiator, k, 1);
                        ((FlightModelMain) (super.FM)).AS.doSetTankState(shot.initiator, k, 1);
                    }
                    if(World.Rnd().nextFloat() < 0.01F || shot.powerType == 3 && World.Rnd().nextFloat() < 0.4F)
                    {
                        ((FlightModelMain) (super.FM)).AS.hitTank(shot.initiator, k, 4);
                        debuggunnery("Fuel Tank (" + k + "): Hit..");
                    }
                }
                return;
            }
Vasya вне форума   Ответить с цитированием