|
Регистрация | Справка | Пользователи | Социальные группы | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
25.10.2021, 12:25 | #421 |
Местный
Регистрация: 15.09.2008
Сообщений: 2,192
|
К сожалению не получилось. Меш просто пропадает и всё. Хочу пояснить: я пытаюсь сделать анимацию отката рампы на Ан-26 на внешнем виде. Посмотрев реализацию сдвига фонаря на других самолётах увидел, что везде используется оператор вида:
Aircraft.xyz[1] = Aircraft.cvt((аргумент0)f, (аргумент1)F, (аргумент2)F, (аргумент3)F, (аргумент4)F); Можете объяснить значения этих аргументов? Правильно ли я делаю, используя переменную cvt? При попытке использовать Ваш код эклипс ругается на отсутствие переменной setNew |
26.10.2021, 12:44 | #422 |
Модератор
Регистрация: 28.02.2007
Адрес: Тула, Россия
Сообщений: 1,845
|
Ну мой код не надо было прям копировать. Это был просто пример реализации. Я подозреваю что меш не пропадает, он просто очень сильно сдвигается. Оперировать надо сотыми долями при сдвиге.
Конструкция cvt работает следующим образом (на примере сдвига фонаря): resetYPRmodifier(); Aircraft.xyz[1] = Aircraft.cvt(f, 0.01F, 0.99F, 0.0F, 0.55F); hierMesh().chunkSetLocate("Blister1_D0", Aircraft.xyz, Aircraft.ypr); Aircraft.xyz[1] или Aircraft.xyz[0] или Aircraft.xyz[2] - ось по которой будет происходить сдвиг дальше можно расшифровать так - при значениях F от 0.01 до 0.99 установить значение Aircraft.xyz[1] (т.е. сдвинуть) от 0.0 до 0.55 оператор cvt устанавливает значение переменной в зависимости от другой переменной используя диапазон изменений. переменная фонаря изменяется от 0 (закрыт) до 1 (открыт) при этом значения положения меняются плавно от 0 к 1. с помощью CVT положение меша меняется плавно от 0 до 0.55, то есть происходит визуальное открытие фонаря. |
26.10.2021, 14:03 | #423 |
Местный
Регистрация: 15.09.2008
Сообщений: 2,192
|
Спасибо! Всё получилось.
|
17.11.2021, 18:35 | #424 |
Местный
Регистрация: 15.09.2008
Сообщений: 2,192
|
Опять у меня залипуха с Ан-26 (точнее с его рампой). В оригинальном моде открытие рампы "завязано" на управление воздушным тормозом (moveAirBrake). Но тогда у ботов десантирование людей и грузов происходит "сквозь рампу", то есть она(рампа) при десантировании ботами не открывается(откатывается). Я попробовал "привязать" управление рампой на управление створками бомболюка (moveBayDoor). Почти получилось, теперь боты при десантировании исправно открывают и закрывают рампу, но не устраивают два момента:
1. Откат рампы происходит очень быстро, можно ли каким либо образом увеличить время отката (хотя бы вдвое)? 2. У самолёта игрока нет блокировки срабатывания кнопки "сброса бомб"(сброса десантников или груза) при закрытых "створках бомболюка"(рампы). То есть если игрок нажимает кнопку"оружие 4" рампа открывается автоматически и после десантирования половины десантников так же автоматически закрывается и оставшиеся десантники прыгают сквозь рампу. Можно это как то поправить? Ну и ещё хотелось бы сохранить звук работы гидравлики открытия\закрытия рампы, потому что после "перепривязки" звук исчез. Если у Вас, уважаемый Asura, найдутся время и желание объяснить "чайнику" нюансы java-кода, прошу помочь мне справиться с этими проблемами. Последний раз редактировалось tarakan67; 17.11.2021 в 18:39. |
18.11.2021, 09:56 | #425 | |||
Модератор
Регистрация: 28.02.2007
Адрес: Тула, Россия
Сообщений: 1,845
|
Цитата:
private float bcurpos ; if (FM.CT.BayDoorControl < 0.5f) { bcurpos -= 0.2F * f; if(bcurpos < 0.0F) bcurpos = 0.0F; } else { bcurpos += 0.2F * f; if(bcurpos > 1.0F) bcurpos = 1.0F; } это вставить в public void update(float f), ту да же вставить код сдвигания рампы. protected void moveBayDoor(float f) не используется. Это не рабочий код - это пример возможной реализации. Скорость открытия можно регулировать изменением множителя bcurpos -= 0.2F * f; Цитата:
Цитата:
|
|||
18.11.2021, 15:53 | #426 | |
Местный
Регистрация: 15.09.2008
Сообщений: 2,192
|
Цитата:
protected void moveBayDoor(float f), то скорость открытия не изменяется. Если же удалить код открытия рампы из protected void moveBayDoor(float f), равно как и закоментить этот оператор, то рампа вообще не открывается. |
|
19.11.2021, 12:23 | #427 |
Модератор
Регистрация: 28.02.2007
Адрес: Тула, Россия
Сообщений: 1,845
|
Вот так с ходу сложно придумать какой нибудь "замедлитель". Скорость открывания есть только у блистера. Как вариант само движение повесить на код открывания кабины и в нем ручками устанавливать открыт бомболюк или нет FM.CT.BayDoorControl = 0 или 1 для управления - можно бросать десант или нет.
|
22.11.2021, 15:18 | #428 |
Местный
Регистрация: 26.12.2013
Адрес: Донецьк Україна
Сообщений: 1,848
|
Уважаемые коллеги прошу помощи. Вот класс корабля с ходовыми огнями, выделено черным, которые включаются ночью. Что и где нужно прописать что бы добавить эффект работающий круглосуточно?
Код:
/* Old_Gunboat - Decompiled by JODE * Visit http://jode.sourceforge.net/ */ package com.maddox.il2.objects.ships; import com.maddox.JGP.Point3d; import com.maddox.il2.ai.World; import com.maddox.il2.ai.ground.TgtShip; import com.maddox.il2.engine.Eff3DActor; import com.maddox.il2.engine.HookNamed; import com.maddox.il2.engine.LightPointActor; import com.maddox.il2.engine.LightPointWorld; import com.maddox.il2.engine.Loc; import com.maddox.rts.SectFile; public abstract class Old_Gunboat extends Ship { /*synthetic*/ static Class class$com$maddox$il2$objects$ships$Old_Gunboat$Koreyets; public static class Koreyets extends BigshipGeneric implements TgtShip { public LightPointActor light1; public LightPointActor light2; public LightPointActor light3; public LightPointActor light4; public LightPointActor[] lightk; public Koreyets() { lightk = new LightPointActor[5]; } public Koreyets(String string, int i, SectFile sectfile, String string_0_, SectFile sectfile_1_, String string_2_) { super(string, i, sectfile, string_0_, sectfile_1_, string_2_); lightk = new LightPointActor[5]; Loc loc = new Loc(0.0, 0.0, 0.0, 0.0F, 0.0F, 0.0F); Loc loc_3_ = new Loc(); Loc loc_4_ = new Loc(); Loc loc_5_ = new Loc(); Loc loc_6_ = new Loc(); Loc loc_7_ = new Loc(); if (World.Sun().ToSun.z < -0.15F) { for (int i_8_ = 0; i_8_ < 6; i_8_++) Eff3DActor.New(this, findHook("_CLight" + i_8_), null, 1.0F, "3DO/Effects/Lights/FlareWhitek.eff", -1.0F); Eff3DActor.New(this, findHook("_GLight"), null, 1.0F, "3DO/Effects/Lights/FlareGreenkb.eff", -1.0F); Eff3DActor.New(this, findHook("_RLight"), null, 1.0F, "3DO/Effects/Lights/FlareRedkb.eff", -1.0F); { } } } } /*synthetic*/ static Class class$(String string) { Class var_class; try { var_class = Class.forName(string); } catch (ClassNotFoundException classnotfoundexception) { throw new NoClassDefFoundError(classnotfoundexception .getMessage()); } return var_class; } static { new BigshipGeneric.SPAWN (class$com$maddox$il2$objects$ships$Old_Gunboat$Koreyets == null ? (class$com$maddox$il2$objects$ships$Old_Gunboat$Koreyets = class$("com.maddox.il2.objects.ships.Old_Gunboat$Koreyets")) : class$com$maddox$il2$objects$ships$Old_Gunboat$Koreyets); } } |
22.11.2021, 15:37 | #429 |
Местный
Регистрация: 26.12.2013
Адрес: Донецьк Україна
Сообщений: 1,848
|
|
22.11.2021, 16:05 | #430 |
Местный
Регистрация: 26.12.2013
Адрес: Донецьк Україна
Сообщений: 1,848
|
|
22.11.2021, 19:42 | #431 |
Местный
Регистрация: 26.12.2013
Адрес: Донецьк Україна
Сообщений: 1,848
|
Василий, то что для тебя яснее ясного, для меня темный лес. В яве я чуть меньше чем никак. Потому и прошу о помощи.
Спасибо всем откликнувшимся. Помогла вот такая простенькая конструкция. Добавил еще один "паровозный" дымок. Как бы стравливаемый пар. При поражении судна парит постоянно, что то вроде предохранительного клапана. Теперь научить бы ходовые огни гаснуть при появлении врага и одновременно включать еще один, дополнительный эффект. Код:
/* Old_Gunboat - Decompiled by JODE * Visit http://jode.sourceforge.net/ */ package com.maddox.il2.objects.ships; import com.maddox.JGP.Point3d; import com.maddox.il2.ai.World; import com.maddox.il2.ai.ground.TgtShip; import com.maddox.il2.engine.Eff3DActor; import com.maddox.il2.engine.HookNamed; import com.maddox.il2.engine.LightPointActor; import com.maddox.il2.engine.LightPointWorld; import com.maddox.il2.engine.Loc; import com.maddox.rts.SectFile; public abstract class Old_Gunboat extends Ship { /*synthetic*/ static Class class$com$maddox$il2$objects$ships$Old_Gunboat$Koreyets; public static class Koreyets extends BigshipGeneric implements TgtShip { public LightPointActor light1; public LightPointActor light2; public LightPointActor light3; public LightPointActor light4; public LightPointActor[] lightk; public Koreyets() { lightk = new LightPointActor[5]; } public Koreyets(String string, int i, SectFile sectfile, String string_0_, SectFile sectfile_1_, String string_2_) { super(string, i, sectfile, string_0_, sectfile_1_, string_2_); lightk = new LightPointActor[5]; Loc loc = new Loc(0.0, 0.0, 0.0, 0.0F, 0.0F, 0.0F); Loc loc_3_ = new Loc(); Loc loc_4_ = new Loc(); Loc loc_5_ = new Loc(); Loc loc_6_ = new Loc(); Eff3DActor.New(this, findHook("_SmokeWhite"), null, 1.0F, "3DO/Effects/Smokes/SmokeWhite.eff", -1.0F); if (World.Sun().ToSun.z < -0.15F) { for (int i_8_ = 0; i_8_ < 6; i_8_++) Eff3DActor.New(this, findHook("_CLight" + i_8_), null, 1.0F, "3DO/Effects/Lights/FlareWhitek.eff", -1.0F); Eff3DActor.New(this, findHook("_GLight"), null, 1.0F, "3DO/Effects/Lights/FlareGreenkb.eff", -1.0F); Eff3DActor.New(this, findHook("_RLight"), null, 1.0F, "3DO/Effects/Lights/FlareRedkb.eff", -1.0F); { } } } } /*synthetic*/ static Class class$(String string) { Class var_class; try { var_class = Class.forName(string); } catch (ClassNotFoundException classnotfoundexception) { throw new NoClassDefFoundError(classnotfoundexception .getMessage()); } return var_class; } static { new BigshipGeneric.SPAWN (class$com$maddox$il2$objects$ships$Old_Gunboat$Koreyets == null ? (class$com$maddox$il2$objects$ships$Old_Gunboat$Koreyets = class$("com.maddox.il2.objects.ships.Old_Gunboat$Koreyets")) : class$com$maddox$il2$objects$ships$Old_Gunboat$Koreyets); } } |
23.11.2021, 13:44 | #432 |
Местный
Регистрация: 26.12.2013
Адрес: Донецьк Україна
Сообщений: 1,848
|
Уважаемые коллеги подскажите пожалуйста код для включения/ выключения меша. При появлении врага меш должен включится, как только враг улетит/уничтожен, меш должен выключиться. Возможно ли такое в принципе?
|
29.05.2022, 21:16 | #433 |
Местный
Регистрация: 15.09.2008
Сообщений: 2,192
|
Здравствуйте. Подскажите, какой класс или переменная отвечает за измерение истинной скорости(та, которая отображается на виде без кабины)?
|
30.05.2022, 09:15 | #434 |
Модератор
Регистрация: 28.02.2007
Адрес: Тула, Россия
Сообщений: 1,845
|
Если нужны цифровые значения то можно так:
spd = (int)(3.6f*Pitot.Indicator((float)World.getPlayerF M().Loc.z, World.getPlayerFM().getSpeed())*0.1f)*10; tas = (int)(3.6f*World.getPlayerFM().getSpeed()); Если для прибора то так (для американцев): mesh.chunkSetAngles("Z_Speed_1", 0.0F, floatindex(cvt(Pitot.Indicator((float) fm.Loc.z, fm.getSpeedKMH()) * 1.131F, 74.07994F, 1222.31894F, 0.0F, 14F), speedometerScale), 0.0F); mesh.chunkSetAngles("Z_Speed_2", 0.0F, floatindex(cvt(fm.getSpeedKMH() * 1.131F, 74.07994F, 1222.31894F, 0.0F, 14F), speedometerScale), 0.0F); или для наших: mesh.chunkSetAngles("zTAS", 0.0F, floatindex(cvt(fm.getSpeedKMH(), 400F, 1100F, 0.0F, 2.0F), tasScale), 0.0F); mesh.chunkSetAngles("zSpeed", 0.0F, floatindex(cvt(Pitot.Indicator((float)fm.Loc.z, fm.getSpeedKMH()), 0.0F, 750F, 0.0F, 14F), speedometerScale), 0.0F);
__________________
Их восемь — нас двое. Расклад перед боем Не наш, но мы будем играть! Серёжа! Держись, нам не светит с тобою, Но козыри надо равнять. © В. Высоцкий __________________ Последний раз редактировалось Asura; 30.05.2022 в 09:22. |
30.05.2022, 13:02 | #435 |
Местный
Регистрация: 15.09.2008
Сообщений: 2,192
|
Спасибо! Всё получилось.
|
14.08.2022, 12:09 | #436 |
Местный
Регистрация: 15.09.2008
Сообщений: 2,192
|
Здравствуйте. Интересуют классы радиомаяков системы слепой посадки. Хочу сделать дальность срабатывания курсового и глиссадного маяков разными. Сейчас оба маяка начинают "перемещать планки" на приборе на расстоянии 35 км от них. В реальности глиссадный радиомаяк имеет дальность действия 18-20 км в отличие от курсового с дальностью до 48 км. Если не затруднит, подскажите, куда копать?
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|