Скрипты в Space Engineers: Урок 2а: Управление гироскопами. Целимся в точку.

  Рет қаралды 18,615

Renesco Rocketman

Renesco Rocketman

Күн бұрын

Пікірлер
@antonstezhkin5991
@antonstezhkin5991 5 жыл бұрын
Space engenesrs - самый хорошо замаскированный учебник по векторной алгебре!
@Alexei_71
@Alexei_71 9 жыл бұрын
Спасибо за урок, жду с нетерпением следующего!
@RenescoRocketman
@RenescoRocketman 9 жыл бұрын
+Алексей Клёсов Спасибо, будет еще.
@RenescoRocketman
@RenescoRocketman 8 жыл бұрын
Тексты использованных в ролике скриптов можно найти здесь: spaceengineers.ru/forum/22/5055
@RenescoRocketman
@RenescoRocketman 8 жыл бұрын
Эта серия получилась не очень хорошо. Мало наглядности в объяснениях. В следующем ролике (2c) рассматривается практически то же самое, но с большим количеством картинок и гораздо понятнее: kzbin.info/www/bejne/e3ucpaSOpMucqc0 Так что, если этот ролик смотреть трудно - переходите к следующему.
@barmaley3859
@barmaley3859 3 жыл бұрын
Что то не так с TargetYaw, замедляется и носит по кругу без остановки. Не могу сообразить что не так
@barmaley3859
@barmaley3859 3 жыл бұрын
Понял, удаленка не была сориентирована вперед как и гироскоп, в видео об этом не сказано было, ладно, разобрался
@KryackTF2
@KryackTF2 7 жыл бұрын
Углы Йоу, Бич, и Ролл)
@RayAnorGame
@RayAnorGame 9 жыл бұрын
ну и ещё, как будешь реализовывать скрипт с Roll - в идеале Roll должен быть перпендикулярно направлен вверх по направлению вектора на цель, если используется вне гравитации, и параллельно поверхности планеты, если используется в гравитации. Так потом гораздо проще управлять (да и живой пилот лучше перехватит управление) в режиме преследования/упреждения.
@RenescoRocketman
@RenescoRocketman 9 жыл бұрын
+Ray Anor С ролл возможны разные варианты в зависимости от задач. Можно вращать его по гравитации, можно для гашения боковых инерций, или для поддержания квадратности квадратно-гнездового бурения=)
@RayAnorGame
@RayAnorGame 9 жыл бұрын
ну это-то и понятно. Я как вариант описал, а ты уж сам думай.
@Rapteell
@Rapteell 9 жыл бұрын
Приятно смотреть твои видео, всё понятно и доступно. Спасибо за то что делишься подобными знаниями. Возможно ты сможешь подсказать или дать пару советов касательно блока "приманки". Хочу построить подобие твоей ракеты в крайне упрощенной форме и с иными целями: вертикальный пуск основного носителя с последующим разбросом более мелких частей в одной плоскости с кораблем; каждый носитель содержит в себе блок приманки и минимальный запас брони что бы выдержать хотя бы один удар. Возможно ли как то скриптами указать сколько топлива нужно вложить в реакторы? В случае ракеты для "ювелирного" поражения отдельных целей (турелей и др.) как указать сколько патронов вложить в пулемет/ракетницу, определить координаты и зафиксировать цели в виде отдельных блоков (турелей и др.)? Подобное вообще возможно? Было бы крайне классно построить ракету, которая способна одними из своих частей отвлечь огонь противника а остальными вывести из строя (не разрушая) оборону и возможность передвигаться.
@RenescoRocketman
@RenescoRocketman 9 жыл бұрын
+Rapteell Раскидать уран по реакторам можно. В принципе, и ракета с приманками - тоже реально. Просто она будет большая. Буду одну из серий делать про работу с инвентарем.
@rzenevich
@rzenevich 4 жыл бұрын
Super , spasibo !
@Виталий-ь8м7в
@Виталий-ь8м7в Жыл бұрын
@RenescoRocketman - я попробовал "маленький жёлтый кораблик", который был описан в "Уроке 2а" - Управление гироскопами. Целимся в точку. (kzbin.info/www/bejne/Y3Xdh4SQnNB_hrs) Почему-то он НЕНАВОДИТСЯ на точку ... в скрипте Изменил координаты Тестовой точки == на координаты Точки "Center", но скрипт по прежнему НЕХОЧЕТ НАВОДИТЬСЯ (!) ... а также при проверке - выдаёт ошибку связанную с "IMyTextPanel" : Программа(62,72): Ошибка: ) ожидаемая Программа(64,25): Ошибка: ; ожидаемая Программа(66,7): Ошибка: "IMyTextPanel" не содержит определения для "WritePublicText" и не удалось найти доступный метод расширения "WritePublicText", принимающий первый аргумент типа "MyTextPanel" (вам не хватает директивы using или ссылки на сборку?)
@Hecondsand
@Hecondsand 9 ай бұрын
вместо WritePublicText используй WriteText
@to_love2005
@to_love2005 7 жыл бұрын
очень нужен скрипт, автоматически выравнивающий корабль относительно горизонта. что бы его нельзя было завалить вбок или накренить вперед/назад
@alexanderimamiev4266
@alexanderimamiev4266 6 жыл бұрын
Последнее видео)
@ЕвгенийЕсенин-г4у
@ЕвгенийЕсенин-г4у 3 жыл бұрын
Весьма и весьма полезные гайды! Только на этом канале мне удалось хоть немного научится понимать код. Спасибо огромное, Ваш труд бесценнен. Но... Этих знаний мне всё равно нехватает что бы понять и разобрать скрипт по двигателям на роторах из воркшопа... Тупой, наверное. Уважаемый Renesco Rocketman, если Вам вдруг будет скучно и нечем заняться, немогли бы Вы разобрать что-то подобное? Буду очень признателен. Спасибо!
@RenescoRocketman
@RenescoRocketman 3 жыл бұрын
Да, вполне можно таким заняться. Наверное, сделаю такую конструкцию с разбором.
@mrspecnazer8014
@mrspecnazer8014 3 жыл бұрын
Там больше половины лимита символов, такое с лëту понять невозможно
@СтасЗахарченко-э8ц
@СтасЗахарченко-э8ц 8 ай бұрын
По мне, так чтобы получить угол между вектором вперед и вектором на цель, надо наоборот вычесть фи из пи/2. А не пипополам из фи И включение/выключение скрипта можно одним аргументом выполнять простой командой stop=!stop;
@sirgienko
@sirgienko 9 жыл бұрын
При получении TargetPinch разве при вычитании PI/2 не будет отрицательный угол? Получаемый угол даже на картинке меньше 90 градусов. Может поэтому нужно для правильной работы отрицательный угол умножать на -1, чтобы угол стал положительным?
@RenescoRocketman
@RenescoRocketman 9 жыл бұрын
+Никита Сиргиенко Нет, он так и остается отрицательным. Вращение по осям может быть в 2 стороны. Соответственно, если, например, на ось гироскопа "Pitch" подается сигнал со знаком "+", то он вращает корабль вверх, если со знаком "-", то вращает вниз. На -1 я умножаю просто чтобы перевернуть сигнал по вертикальной оси. Иначе гироскоп будет работать неадекватно.
@ШлакоБлогер
@ШлакоБлогер 3 жыл бұрын
А как задать переключение блока ОнОфф? Кодом?
@Виталий-ь8м7в
@Виталий-ь8м7в Жыл бұрын
@RenescoRocketman Почему-то скрипт НЕРАБОТАЕТ :( 1) в "Мире" ненашёл тестовую точку из видео (!) 2) в GPS нашёл координаты точки "Сenter" и вписал их в Скрипт ... при нажатии "1" == кораблик НЕ РЕАГИРУЕТ (!) 😢 а также - при "проверке скрипта" выдаёт ошибку связанную с 'IMyTextPanel' :
@afourz_z
@afourz_z 7 ай бұрын
Скрипт древний. Разрабы меняли некоторые переменные, вроде как, в коде игры, поэтому этот скрипт нужно так же обновлять.
@factoryofmadness9220
@factoryofmadness9220 6 жыл бұрын
Не могли бы вы скинуть текст скрипта файликом, просто перепечатал всё как в видосе, но что-то идёт не так и не работает, просото хотелось бы посмотреть исходник :)
@alexredker2060
@alexredker2060 6 жыл бұрын
Интересный метод получился, но вот есть одна проблема. При попытке передать углы "Yaw" "Pitch" Roll" пишет мол не тот тип переменной ( Property Yaw is not of type double, correct type is Single ). Возможно в текущей версии просто уже не работает (
@АртемкаВеклюцкий
@АртемкаВеклюцкий 6 жыл бұрын
И как его использовать? Функция GetDim возвращает дабл, как то преобразовать?
@Malloriak
@Malloriak 6 жыл бұрын
@@АртемкаВеклюцкий привести тип double d; float f; f = (float) d;
@avega-tm
@avega-tm 7 жыл бұрын
Заметил, что все гироскопы одинаково ориентированы, это принципиально или их все же можно располагать основаниями в разных плоскостях? Для инициализации "глобальных" переменных есть отдельный метод public Program(). Или я что-то не так понял? Совсем не понял зачем свич. По моему можно было обойтись ифом. Хотя если это "для примера" или "задел на будущее" - то не понятно зачем иф. Опять таки, если можно выполнить действие просто (в одну строчку) зачем придумывать трудно-читаемую/понимаемую конструкцию (на две строки)? Или в длинном случае значения получаются точнее? И еще вопрос не по теме: а можно из одного программного блока передавать значения в другой? (например: в одном получить состояние системы и передать его в следующий, который обработанные значения передаст в другой, а тот в свою очередь выведет результат на экран).
@RenescoRocketman
@RenescoRocketman 7 жыл бұрын
Практически во всех скриптах ориентация гироскопа важна. Можно сделать трансформацию сигнала на гироскоп его обратной матрицей, тогда можно как угодно располагать сам блок, но это дополнительные действия. Когда снимал это видео, Program() еще не было доступно, а так да. Свич/иф - это как хочется.
@lm_nfa2169
@lm_nfa2169 7 жыл бұрын
У меня совсем не получается сделать скрипт, пробовал даже копипастом, обозвал все переменные (блоки) как надо, меня почему то тупо крутит... Как понял из комментария выше, что надо правильно расположить гироскопы...
@RenescoRocketman
@RenescoRocketman 7 жыл бұрын
Да, вперед пятнышком их надо ставить.
@lm_nfa2169
@lm_nfa2169 7 жыл бұрын
Да, вчера же и получилось. Но столкнулся с проблемой, почему то скрипт не останавливается, думаю, что это из за параметра запуска в таймере, там он стоит на старт, а наверное нужно без параметра ставить.
@RenescoRocketman
@RenescoRocketman 7 жыл бұрын
да, в таймере без аргументов вызывать надо.
@RayAnorGame
@RayAnorGame 9 жыл бұрын
Вот ни у кого не видел автоподстройку GyroMult. Как идея.
@RenescoRocketman
@RenescoRocketman 9 жыл бұрын
+Ray Anor Вообще мощность усилия на гироскопы должна соотноситься с суммой моментов конструкции. Я думаю, игра более-менее реалистично ее считает. Т.е. Она суммирует произведения масс блоков на их расстояния до центра масс. Из скрипта достать многие блоки, типа брони, невозможно. Так что, я думаю единственный пока вариант автоматической калибровки гироскопов - это тестовое вращение с заданным усилием и оценка скорости этого вращения.
@RayAnorGame
@RayAnorGame 9 жыл бұрын
Renesco Rocketman я не про завершающую калибровку. С завершающей можно интересно обойтись - если значение, которое надо "довести" менее нужной нам погрешности, то ставим в 0 ИначеЕсли же нужно всё ещё доводить, а полученное значение менее того, которое дает необходимый результат, то выставлять ту силу, которая всё же имеет действие.
@RayAnorGame
@RayAnorGame 9 жыл бұрын
Renesco Rocketman про промежуточную калибровку. Можно отдельной инициализацией. Как именно? Мой вариант (как вижу): Кораблик необходимо поднять над землей, чтобы начать процесс. Затем начинаем крутить "усилие". Если за delta t получили слишком малый поворот - значит надо увеличивать. Если слишком большой поворот - уменьшать. Далее - половинчатыми итерациями (ну или как уж сам придумаешь). Кроме того, можно таким образом рассчитать отдельно коэффициенты для рысканья(влево/вправо), тангажа(зенит,надир) и крена(вращения по фронтальной оси).
@RenescoRocketman
@RenescoRocketman 9 жыл бұрын
+Ray Anor Да, я примерно так же вижу. Надо отдельную процедуру калибровки вводить. Кроме того, можно еще дополнительно читать ориентацию самих гироскопов в конструкции. Сейчас я просто гироскопы ставлю правильно сориентированными.
@RayAnorGame
@RayAnorGame 9 жыл бұрын
Renesco Rocketman без калибровки придется постоянно под каждый корабль, под каждый сервер вводить коэффициенты. P.S. Твоя идея хранить переменные в дополнительном дисплее - вообще шикарна. P.P.S. Двигатели тоже надо придумать как калибровать, но тут уже отдельная песня. В идеале надо при пустой нагрузке и при максимальной нагрузке делать две калибровки, а затем уже работать с ними, отталкиваясь от суммарной загрузки корабля. P.P.P.S. Более точные коэффициенты могут позволить уменьшить частоту выполнения скрипта.
@forestergogo
@forestergogo 8 жыл бұрын
Про нормализацию вектора совсем ничего не понял, нам в школе забивали что у векторов нет длины, но почему она есть?
@RenescoRocketman
@RenescoRocketman 8 жыл бұрын
у них нет начала. длина есть вполне. нормализация - это деление всех 3х координат вектора на его длину, в результате получается вектор с длиной=1. Этот видос плохо вышел, ненаглядно. в следующем с картинками про вектора.
@КарлКори-у5ю
@КарлКори-у5ю Жыл бұрын
@@RenescoRocketman Приплыли. начало тоже есть у каждого вектора. У тебя начало вектора наведения как раз в блоке управления - ты его из финальной точки вычитал. Другой вопрос в том, что вектора с равными координатами параллельны, сонаправлены и равны по длине.
@АнатолийДолгов-ь6е
@АнатолийДолгов-ь6е 6 жыл бұрын
Ды было не плохо запилить срипт выравнивающий в ноль корабыль гироскопами
@RenescoRocketman
@RenescoRocketman 6 жыл бұрын
а как раз делали в паре последних стримов такой скрипт. там и ссылка есть
@Людмила-с3э5у
@Людмила-с3э5у 8 жыл бұрын
кто подскажет, почему при активации этого скрипта кораблик вращается без останова, а таймер горит ровным зеленым цветом?
@RenescoRocketman
@RenescoRocketman 8 жыл бұрын
+Илья т А сам текст скрипта откуда брали? Если из темы на spaceengineers.ru, то там надо закомментироовать следующие строки (они расчитаны на отстыковку и запуск торпеды из урока 2c): (GridTerminalSystem.GetBlockWithName("Merge") as IMyTerminalBlock).ApplyAction("OnOff_Off"); (GridTerminalSystem.GetBlockWithName("FThruster") as IMyTerminalBlock).ApplyAction("OnOff_On"); (GridTerminalSystem.GetBlockWithName("SpotLight1") as IMyTerminalBlock).ApplyAction("OnOff_On"); (GridTerminalSystem.GetBlockWithName("SpotLight2") as IMyTerminalBlock).ApplyAction("OnOff_On");
@RenescoRocketman
@RenescoRocketman 8 жыл бұрын
+Илья т Надо еще поглядеть, не выдал-ли скрипт какую-то ошибку. Может быть, надо правильно переименовать какой-то блок в кораблике. Ну и если опубликуете свой мир в стиме, то могу глянуть, что там не работает.
@Людмила-с3э5у
@Людмила-с3э5у 8 жыл бұрын
+Renesco Rocketman все оказалось проще, не прицепил и не настроил таймер к программному блоку), почему-то не попалась данная инфа раньше. Теперь пытаюсь добиться обновления информации на текстовой панели.
@RenescoRocketman
@RenescoRocketman 8 жыл бұрын
Текстовые панели сейчас глючные, но их можно принудительно обновить, если воткнуть вот такие строки: TP.ShowTextureOnScreen(); TP.ShowPublicTextOnScreen();
@hardworker3738
@hardworker3738 7 жыл бұрын
Так и не понял, зачем три гироскопа?
@RenescoRocketman
@RenescoRocketman 7 жыл бұрын
Просто для демонстрации работы с несколькими блоками. Практически можно было использовать один.
@marchenko86
@marchenko86 8 жыл бұрын
блин могли бы разрабы хоть подсветку синтаксиса сделать в этом окне, язык то известен.
@RenescoRocketman
@RenescoRocketman 8 жыл бұрын
+Дмитро Марченко Да, в этом окне все выглядит очень плохо. Наверное, коды в следующих выпусках тоже буду вставлять в виде картинок. В следующей серии все более понятно - там я уже догадался картинки впихивать.
@forestergogo
@forestergogo 8 жыл бұрын
От одних только круглых и фигурных скобок приходится чуть ли не тыкаться носом в монитор. Наверно пока сам не попробуешь сделать кривой но удобный редактор *в коде игры* и показать кинам, они вряд ли что либо начнут предпринимать самостоятельно....
@fosjr6258
@fosjr6258 7 жыл бұрын
Когда нихера не понимаешь :(
@ataskarabas7463
@ataskarabas7463 2 жыл бұрын
бл... я вот реально не понимаю нахрена мне этот урок один хрен дремучий лес, я так то за скриптом сюда пришёл и мне лично пофиг как он работает
Леон киллер и Оля Полякова 😹
00:42
Канал Смеха
Рет қаралды 4,7 МЛН
The Best Band 😅 #toshleh #viralshort
00:11
Toshleh
Рет қаралды 22 МЛН
My scorpion was taken away from me 😢
00:55
TyphoonFast 5
Рет қаралды 2,7 МЛН
Space Engineers ТОП 3 ПОЛЕЗНЫХ СКРИПТА!!!
27:02
Engineer galaxy
Рет қаралды 10 М.
Центр масс. Максималка. Space Engineers
14:26
Леон киллер и Оля Полякова 😹
00:42
Канал Смеха
Рет қаралды 4,7 МЛН