Space engenesrs - самый хорошо замаскированный учебник по векторной алгебре!
@Alexei_719 жыл бұрын
Спасибо за урок, жду с нетерпением следующего!
@RenescoRocketman9 жыл бұрын
+Алексей Клёсов Спасибо, будет еще.
@RenescoRocketman8 жыл бұрын
Тексты использованных в ролике скриптов можно найти здесь: spaceengineers.ru/forum/22/5055
@RenescoRocketman8 жыл бұрын
Эта серия получилась не очень хорошо. Мало наглядности в объяснениях. В следующем ролике (2c) рассматривается практически то же самое, но с большим количеством картинок и гораздо понятнее: kzbin.info/www/bejne/e3ucpaSOpMucqc0 Так что, если этот ролик смотреть трудно - переходите к следующему.
@barmaley38593 жыл бұрын
Что то не так с TargetYaw, замедляется и носит по кругу без остановки. Не могу сообразить что не так
@barmaley38593 жыл бұрын
Понял, удаленка не была сориентирована вперед как и гироскоп, в видео об этом не сказано было, ладно, разобрался
@KryackTF27 жыл бұрын
Углы Йоу, Бич, и Ролл)
@RayAnorGame9 жыл бұрын
ну и ещё, как будешь реализовывать скрипт с Roll - в идеале Roll должен быть перпендикулярно направлен вверх по направлению вектора на цель, если используется вне гравитации, и параллельно поверхности планеты, если используется в гравитации. Так потом гораздо проще управлять (да и живой пилот лучше перехватит управление) в режиме преследования/упреждения.
@RenescoRocketman9 жыл бұрын
+Ray Anor С ролл возможны разные варианты в зависимости от задач. Можно вращать его по гравитации, можно для гашения боковых инерций, или для поддержания квадратности квадратно-гнездового бурения=)
@RayAnorGame9 жыл бұрын
ну это-то и понятно. Я как вариант описал, а ты уж сам думай.
@Rapteell9 жыл бұрын
Приятно смотреть твои видео, всё понятно и доступно. Спасибо за то что делишься подобными знаниями. Возможно ты сможешь подсказать или дать пару советов касательно блока "приманки". Хочу построить подобие твоей ракеты в крайне упрощенной форме и с иными целями: вертикальный пуск основного носителя с последующим разбросом более мелких частей в одной плоскости с кораблем; каждый носитель содержит в себе блок приманки и минимальный запас брони что бы выдержать хотя бы один удар. Возможно ли как то скриптами указать сколько топлива нужно вложить в реакторы? В случае ракеты для "ювелирного" поражения отдельных целей (турелей и др.) как указать сколько патронов вложить в пулемет/ракетницу, определить координаты и зафиксировать цели в виде отдельных блоков (турелей и др.)? Подобное вообще возможно? Было бы крайне классно построить ракету, которая способна одними из своих частей отвлечь огонь противника а остальными вывести из строя (не разрушая) оборону и возможность передвигаться.
@RenescoRocketman9 жыл бұрын
+Rapteell Раскидать уран по реакторам можно. В принципе, и ракета с приманками - тоже реально. Просто она будет большая. Буду одну из серий делать про работу с инвентарем.
@rzenevich4 жыл бұрын
Super , spasibo !
@Виталий-ь8м7в Жыл бұрын
@RenescoRocketman - я попробовал "маленький жёлтый кораблик", который был описан в "Уроке 2а" - Управление гироскопами. Целимся в точку. (kzbin.info/www/bejne/Y3Xdh4SQnNB_hrs) Почему-то он НЕНАВОДИТСЯ на точку ... в скрипте Изменил координаты Тестовой точки == на координаты Точки "Center", но скрипт по прежнему НЕХОЧЕТ НАВОДИТЬСЯ (!) ... а также при проверке - выдаёт ошибку связанную с "IMyTextPanel" : Программа(62,72): Ошибка: ) ожидаемая Программа(64,25): Ошибка: ; ожидаемая Программа(66,7): Ошибка: "IMyTextPanel" не содержит определения для "WritePublicText" и не удалось найти доступный метод расширения "WritePublicText", принимающий первый аргумент типа "MyTextPanel" (вам не хватает директивы using или ссылки на сборку?)
@Hecondsand9 ай бұрын
вместо WritePublicText используй WriteText
@to_love20057 жыл бұрын
очень нужен скрипт, автоматически выравнивающий корабль относительно горизонта. что бы его нельзя было завалить вбок или накренить вперед/назад
@alexanderimamiev42666 жыл бұрын
Последнее видео)
@ЕвгенийЕсенин-г4у3 жыл бұрын
Весьма и весьма полезные гайды! Только на этом канале мне удалось хоть немного научится понимать код. Спасибо огромное, Ваш труд бесценнен. Но... Этих знаний мне всё равно нехватает что бы понять и разобрать скрипт по двигателям на роторах из воркшопа... Тупой, наверное. Уважаемый Renesco Rocketman, если Вам вдруг будет скучно и нечем заняться, немогли бы Вы разобрать что-то подобное? Буду очень признателен. Спасибо!
@RenescoRocketman3 жыл бұрын
Да, вполне можно таким заняться. Наверное, сделаю такую конструкцию с разбором.
@mrspecnazer80143 жыл бұрын
Там больше половины лимита символов, такое с лëту понять невозможно
@СтасЗахарченко-э8ц8 ай бұрын
По мне, так чтобы получить угол между вектором вперед и вектором на цель, надо наоборот вычесть фи из пи/2. А не пипополам из фи И включение/выключение скрипта можно одним аргументом выполнять простой командой stop=!stop;
@sirgienko9 жыл бұрын
При получении TargetPinch разве при вычитании PI/2 не будет отрицательный угол? Получаемый угол даже на картинке меньше 90 градусов. Может поэтому нужно для правильной работы отрицательный угол умножать на -1, чтобы угол стал положительным?
@RenescoRocketman9 жыл бұрын
+Никита Сиргиенко Нет, он так и остается отрицательным. Вращение по осям может быть в 2 стороны. Соответственно, если, например, на ось гироскопа "Pitch" подается сигнал со знаком "+", то он вращает корабль вверх, если со знаком "-", то вращает вниз. На -1 я умножаю просто чтобы перевернуть сигнал по вертикальной оси. Иначе гироскоп будет работать неадекватно.
@ШлакоБлогер3 жыл бұрын
А как задать переключение блока ОнОфф? Кодом?
@Виталий-ь8м7в Жыл бұрын
@RenescoRocketman Почему-то скрипт НЕРАБОТАЕТ :( 1) в "Мире" ненашёл тестовую точку из видео (!) 2) в GPS нашёл координаты точки "Сenter" и вписал их в Скрипт ... при нажатии "1" == кораблик НЕ РЕАГИРУЕТ (!) 😢 а также - при "проверке скрипта" выдаёт ошибку связанную с 'IMyTextPanel' :
@afourz_z7 ай бұрын
Скрипт древний. Разрабы меняли некоторые переменные, вроде как, в коде игры, поэтому этот скрипт нужно так же обновлять.
@factoryofmadness92206 жыл бұрын
Не могли бы вы скинуть текст скрипта файликом, просто перепечатал всё как в видосе, но что-то идёт не так и не работает, просото хотелось бы посмотреть исходник :)
@alexredker20606 жыл бұрын
Интересный метод получился, но вот есть одна проблема. При попытке передать углы "Yaw" "Pitch" Roll" пишет мол не тот тип переменной ( Property Yaw is not of type double, correct type is Single ). Возможно в текущей версии просто уже не работает (
@АртемкаВеклюцкий6 жыл бұрын
И как его использовать? Функция GetDim возвращает дабл, как то преобразовать?
@Malloriak6 жыл бұрын
@@АртемкаВеклюцкий привести тип double d; float f; f = (float) d;
@avega-tm7 жыл бұрын
Заметил, что все гироскопы одинаково ориентированы, это принципиально или их все же можно располагать основаниями в разных плоскостях? Для инициализации "глобальных" переменных есть отдельный метод public Program(). Или я что-то не так понял? Совсем не понял зачем свич. По моему можно было обойтись ифом. Хотя если это "для примера" или "задел на будущее" - то не понятно зачем иф. Опять таки, если можно выполнить действие просто (в одну строчку) зачем придумывать трудно-читаемую/понимаемую конструкцию (на две строки)? Или в длинном случае значения получаются точнее? И еще вопрос не по теме: а можно из одного программного блока передавать значения в другой? (например: в одном получить состояние системы и передать его в следующий, который обработанные значения передаст в другой, а тот в свою очередь выведет результат на экран).
@RenescoRocketman7 жыл бұрын
Практически во всех скриптах ориентация гироскопа важна. Можно сделать трансформацию сигнала на гироскоп его обратной матрицей, тогда можно как угодно располагать сам блок, но это дополнительные действия. Когда снимал это видео, Program() еще не было доступно, а так да. Свич/иф - это как хочется.
@lm_nfa21697 жыл бұрын
У меня совсем не получается сделать скрипт, пробовал даже копипастом, обозвал все переменные (блоки) как надо, меня почему то тупо крутит... Как понял из комментария выше, что надо правильно расположить гироскопы...
@RenescoRocketman7 жыл бұрын
Да, вперед пятнышком их надо ставить.
@lm_nfa21697 жыл бұрын
Да, вчера же и получилось. Но столкнулся с проблемой, почему то скрипт не останавливается, думаю, что это из за параметра запуска в таймере, там он стоит на старт, а наверное нужно без параметра ставить.
@RenescoRocketman7 жыл бұрын
да, в таймере без аргументов вызывать надо.
@RayAnorGame9 жыл бұрын
Вот ни у кого не видел автоподстройку GyroMult. Как идея.
@RenescoRocketman9 жыл бұрын
+Ray Anor Вообще мощность усилия на гироскопы должна соотноситься с суммой моментов конструкции. Я думаю, игра более-менее реалистично ее считает. Т.е. Она суммирует произведения масс блоков на их расстояния до центра масс. Из скрипта достать многие блоки, типа брони, невозможно. Так что, я думаю единственный пока вариант автоматической калибровки гироскопов - это тестовое вращение с заданным усилием и оценка скорости этого вращения.
@RayAnorGame9 жыл бұрын
Renesco Rocketman я не про завершающую калибровку. С завершающей можно интересно обойтись - если значение, которое надо "довести" менее нужной нам погрешности, то ставим в 0 ИначеЕсли же нужно всё ещё доводить, а полученное значение менее того, которое дает необходимый результат, то выставлять ту силу, которая всё же имеет действие.
@RayAnorGame9 жыл бұрын
Renesco Rocketman про промежуточную калибровку. Можно отдельной инициализацией. Как именно? Мой вариант (как вижу): Кораблик необходимо поднять над землей, чтобы начать процесс. Затем начинаем крутить "усилие". Если за delta t получили слишком малый поворот - значит надо увеличивать. Если слишком большой поворот - уменьшать. Далее - половинчатыми итерациями (ну или как уж сам придумаешь). Кроме того, можно таким образом рассчитать отдельно коэффициенты для рысканья(влево/вправо), тангажа(зенит,надир) и крена(вращения по фронтальной оси).
@RenescoRocketman9 жыл бұрын
+Ray Anor Да, я примерно так же вижу. Надо отдельную процедуру калибровки вводить. Кроме того, можно еще дополнительно читать ориентацию самих гироскопов в конструкции. Сейчас я просто гироскопы ставлю правильно сориентированными.
@RayAnorGame9 жыл бұрын
Renesco Rocketman без калибровки придется постоянно под каждый корабль, под каждый сервер вводить коэффициенты. P.S. Твоя идея хранить переменные в дополнительном дисплее - вообще шикарна. P.P.S. Двигатели тоже надо придумать как калибровать, но тут уже отдельная песня. В идеале надо при пустой нагрузке и при максимальной нагрузке делать две калибровки, а затем уже работать с ними, отталкиваясь от суммарной загрузки корабля. P.P.P.S. Более точные коэффициенты могут позволить уменьшить частоту выполнения скрипта.
@forestergogo8 жыл бұрын
Про нормализацию вектора совсем ничего не понял, нам в школе забивали что у векторов нет длины, но почему она есть?
@RenescoRocketman8 жыл бұрын
у них нет начала. длина есть вполне. нормализация - это деление всех 3х координат вектора на его длину, в результате получается вектор с длиной=1. Этот видос плохо вышел, ненаглядно. в следующем с картинками про вектора.
@КарлКори-у5ю Жыл бұрын
@@RenescoRocketman Приплыли. начало тоже есть у каждого вектора. У тебя начало вектора наведения как раз в блоке управления - ты его из финальной точки вычитал. Другой вопрос в том, что вектора с равными координатами параллельны, сонаправлены и равны по длине.
@АнатолийДолгов-ь6е6 жыл бұрын
Ды было не плохо запилить срипт выравнивающий в ноль корабыль гироскопами
@RenescoRocketman6 жыл бұрын
а как раз делали в паре последних стримов такой скрипт. там и ссылка есть
@Людмила-с3э5у8 жыл бұрын
кто подскажет, почему при активации этого скрипта кораблик вращается без останова, а таймер горит ровным зеленым цветом?
@RenescoRocketman8 жыл бұрын
+Илья т А сам текст скрипта откуда брали? Если из темы на 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");
@RenescoRocketman8 жыл бұрын
+Илья т Надо еще поглядеть, не выдал-ли скрипт какую-то ошибку. Может быть, надо правильно переименовать какой-то блок в кораблике. Ну и если опубликуете свой мир в стиме, то могу глянуть, что там не работает.
@Людмила-с3э5у8 жыл бұрын
+Renesco Rocketman все оказалось проще, не прицепил и не настроил таймер к программному блоку), почему-то не попалась данная инфа раньше. Теперь пытаюсь добиться обновления информации на текстовой панели.
@RenescoRocketman8 жыл бұрын
Текстовые панели сейчас глючные, но их можно принудительно обновить, если воткнуть вот такие строки: TP.ShowTextureOnScreen(); TP.ShowPublicTextOnScreen();
@hardworker37387 жыл бұрын
Так и не понял, зачем три гироскопа?
@RenescoRocketman7 жыл бұрын
Просто для демонстрации работы с несколькими блоками. Практически можно было использовать один.
@marchenko868 жыл бұрын
блин могли бы разрабы хоть подсветку синтаксиса сделать в этом окне, язык то известен.
@RenescoRocketman8 жыл бұрын
+Дмитро Марченко Да, в этом окне все выглядит очень плохо. Наверное, коды в следующих выпусках тоже буду вставлять в виде картинок. В следующей серии все более понятно - там я уже догадался картинки впихивать.
@forestergogo8 жыл бұрын
От одних только круглых и фигурных скобок приходится чуть ли не тыкаться носом в монитор. Наверно пока сам не попробуешь сделать кривой но удобный редактор *в коде игры* и показать кинам, они вряд ли что либо начнут предпринимать самостоятельно....
@fosjr62587 жыл бұрын
Когда нихера не понимаешь :(
@ataskarabas74632 жыл бұрын
бл... я вот реально не понимаю нахрена мне этот урок один хрен дремучий лес, я так то за скриптом сюда пришёл и мне лично пофиг как он работает