ошибки.ru
Вы здесь
Основы скриптинга в Phun и Algodoo
Все скрипты записываются в скриптовом меню объекта. Оно находится в контекстном меню объекта «Script Menu» .
В поле OnCollide уже находится запись (e)=><> . Эта запись, по моему мнению, означает, что при столкновении (переменная E) выполнится (=> этот знак) то, что находится в фигурных скобках. В эти скобки-то мы и записываем наш скрипт.
Допустим, мы хотим, чтобы появился некий объект, пусть круг, в заданной нами точке.
Тогда нам нужно 2 объекта, которые будут взаимодействовать. Один из них мы и «заскриптуем».
Наш скрипт выглядит так:
Теперь давайте разберёмся подробно: Scene – означает место, в котором что — либо создастся. Точка после отделяет команду Add , которая значит «добавить». Добавляем мы круг – Circle . Дальше открываем ещё одни фигурные скобочки, в которые мы запишем параметры добавляемого объекта. А именно Pos – это позиция (она имеет вид, например [1,1], тоесть 1 по оси X и 1 по Y), в нашем случае Epos означает «позиция столкновения». Далее идёт знак «точка с запятой», он необходим, чтобы программа поняла, что дальше идёт другой параметр. Параметр Radius – это расстояние от центра круга до его края в метрах. Параметр Color – это цвет. Параметр CollideSet это набор столкновений, в нашем случае равный «А».
Внимательно следите за ошибками, любая лишняя, или недостающая буква, отсутствующие знаки приводят к ошибке скрипта вцелом!
Теперь давайте разберёмся с формулами.
Всем известно, что компьютер это – ЭВМ. Это значит, что он может вести расчёты. Вы можете не вычислять самостоятельно значения для параметров.
Самым простым примером будет сложение, вычитание, умножение или деление. Итак, скрипт:
OnCollide (e)=>
Означает, что при каждом столкновении заскриптованого объекта с простым у простого будет добавляться его собственное значение плотности. Допустим, это значение было равно 2, после 1 столкновения оно будет равно 2+2=4. После 2 столкновений – 4 + 4= 8. После 3 столкновений – 8+8 = 16. Этот принцип применим и к намного более сложным вычислениям.
Теперь давайте разберёмся ещё более подробно к ключевым словам, которые Phun и Algodoo понимают.
Other – Буквально означает: «Не этот, а другой». Заскриптованый объект влияет на другой объект, с которым столкнулся.
This — Буквально означает: «этот, а не другой». Заскриптованый объект влияет на себя и не влияет на объект, с которым столкнулся.
Geom – Применимо к лазерам, означает, что лазер влияет на объект, и не влияет на себя.
Laser – Применимо к лазерам, означает, что лазер влияет на себя, и не влияет на объект.
Итак, если вы поняли, как объект может непосредственно влиять на объект. Давайте рассмотрим случай, когда скриптовый объект находится на расстоянии от другого объекта, к которому относится. Непонятно? Ну, мне тоже было бы непонятно, если бы я этого не знал.
Объясняю: такой случай, например, когда нам надо вывести информацию о далёком объекте на Прямоугольник с текстом. Например, количество патронов, скорость, или любую другую.
Для этого нам потребуется ввести свою переменную, которая будет нести нужную информацию.
Нажимаем клавишу «тильда» (Буква «Ё» на русской раскладке, под эскейпом). Вылезло меню, это командная строка. Там вписываем нашу переменную – Scene.my.X := 350 . Где X – любой знак, цифра, или набор знаков; А число 350 – будет количеством патронов.
Итак, наша система будет получать данные о количестве патронов. Пусть 1 выстрел тратит 2 патрона. Выглядит так –
…Scene.my.Patron := Scene.my.Patron – 2…
Теперь нам надо вывести информацию, об оставшихся патронах. Обычно используют лазеры, но разница только в скорости обновления информации.
Создаём прямоугольник, делаем его чёрным, вписываем любой текст. Подгоняем текст по размеру, для удобства. К прямоугольнику, вернее рядом с ним, привинчиваем осью с мотором, какой-нибудь объект, так чтобы он бесконечно ударял в прямоугольник (желательно с большой скоростью).
В объект садим скрипт:
Получаем в прямоугольнике в скриптовом меню, в окне Text следующее
Означает к пустому тексту добавить значение нашей переменной. И вот наш прямоугольник показывает текущее значение этой переменной.
ВАЖНОЕ ПРИМЕЧАНИЕ! Если вы сохраните не всю сцену, а только те объекты, которые у вас получились, то переменная потеряется! Её необходимо снова вписать в консоль, и только потом добавлять ваши обьекты.
Источник
Публикации сообщества
Программа физического моделирования Algodoo, первые шаги
Компьютерное моделирование физических явлений, кинематических схем, работающих механизмов — вот что такое программа Algodoo. Своим стилем она напоминает незабвенные «The Incredible Machine» и «Заработало!» . Экспериментировать можно с твёрдыми и пластичными объектами, жидкостями, верёвочными соединениями, лазерами, оптическими элементами, всего не перечесть. Тот, кому интересно, может почитать об этом в обзорной статье.
https://mntc.livejournal.com/25361.html
Обилие инструментов может поначалу испугать, но если двигаться по шагам, освоиться будет несложно.
Прежде всего программу следует скачать и установить на свой компьютер. Она разрабатывалась как коммерческая, но через какое-то время перешла в свободный доступ и стала бесплатной. Не стоит пытаться использовать так называемые «русифицированные версии», размещённые на сомнительных веб-страницах. Пользуйтесь официальным сайтом.
http://www.algodoo.com/download/
Русифицировать программу следует после завершения установки. Русификация создана энтузиастами, содержит ошибки и недоработки, но у любого есть возможность заняться её исправлением (а потом поделиться с остальными результатом).
Существует два корректных способа добавить русский язык: воспользоваться Algodoo-установщиком (файл с расширением phi), либо вручную записать пару файлов (графический и текстовой конфигурационный) в нужную директорию.
Тот, кто предпочитает второй путь, может скачать с официального форума файлы «Russian.png» и «Russian.cfg», а затем скопировать их в папку «C:\Program Files (x86)\Algodoo\data\language».
http://www.algodoo.com/forum/viewtopic.php?f=30&t=10004&sid=f999349bc39616bdc8a2d34bd26e9b73#p68760
Теперь можно запустить программу и сменить в настройках язык на русский. После запуска открывается окно приветствия.
Нажмите «Setup» (либо шестерёнку в программном меню) и выберите «Set your language» («Choose language»), Russian. Готово.
Можно проверить и остальные настройки, но нет большой необходимости что-либо ещё менять.
Очень полезно будет пройти начальное обучение. Для этого следует щёлкнуть по знаку вопроса в главном меню («Помощь») и выбрать учебник «Crash course» или «Курс молодого бойца» (в зависимости от перевода).
Можно также щёлкнуть по значку «Мои сцены» («Открыть») и выбрать «Algodoo Play», специальный демонстрационный игровой проект, в котором нужно суметь прокатить шарик по своеобразному лабиринту, выполняя необходимые действия по подсказкам (подсказки на английском языке, это часть проекта). Текущий инструмент меняется буквенными клавишами или при помощи мыши.
Но полезнее всего просто самостоятельно поэкспериментировать с различными инструментами и объектами, а затем закрепить полученные знания, создав функционирующую кинематическую схему, заготовку для шагающего механизма.
Нажмите значок «Новая сцена», выберите цветовую палитру (например, «Default»). Вы увидите пустое пространство, небо (голубое, c «облаками») и землю (зелёную). Изображение можно перемещать, «ухватив» правой кнопкой мыши за «небо» или за «землю», а колёсиком мыши масштабировать. У нашей компьютерной «вселенной» существуют границы, но пусть нас пока это не волнует.
Щёлкните по значку «Инструмент для создания круга (C)» («Circle»).
Теперь нарисуйте на голубом поле («в небе») круглый объект произвольного размера.
Проверим, может ли это «колёсико» кататься. Щёлкните по кнопке «Play» (зелёный треугольничек, «Пауза и Запуск симуляции»). Круг упал на землю в соответствии с силами гравитации. Не останавливая симуляцию выберите инструмент D («Drag tool», «перетаскивание»), «зацепите» им кружочек и двиньте в сторону. Колесо покатилось и исчезло за краем экрана.
Не пугайтесь, просто остановите симуляцию. Затем воспользуйтесь кнопкой «Отменить». Несколько раз нажимая добейтесь того, чтобы круг вернулся в своё первоначальное положение «в воздухе». Этим приёмом в Algodoo приходится пользоваться постоянно, «намудрить» очень легко.
Давайте разберёмся с очень важным аспектом — настройками столкновений объектов. Нарисуйте над кругом горизонтальный прямоугольник произвольного размера.
Запустите симуляцию. Как видите, объекты сталкиваются друг с другом.
Проведите ещё один эксперимент — передвиньте прямоугольник, чтобы его позиция пересеклась с кругом (инструментом M, «Move», «перемещение») и запустите симуляцию. Эффектно разлетелись, не правда ли? Верните всё как было.
Можно ли добиться того, чтобы объекты размещались в разных плоскостях? Это потребуется при создании кинематических схем. Щёлкните правой кнопкой мыши по прямоугольнику и выберите «столкновения слоёв». Снимите маркер в одном слое, поставьте в другом.
Теперь круг и прямоугольник занимают разные слои — A и B соответственно. Столкновения нет. Проверьте это. Кстати, обратите внимание, что есть разница между слоем столкновений и слоем отображения. В данном случае прямоугольник отображается поверх круга (сменить это можно командами контекстного меню «выбрать», «переместить на задний/передний план»).
Ещё один способ добиться того, чтобы объекты считались не сталкивающимися друг с другом — явным образом задать тип кинематической связи между ними. Сделать это можно инструментом F («Fixate», «Гвоздь») либо H («Axle tool», «Ось»).
Давайте проверим. Создайте ещё один прямоугольник, теперь вертикальный, достаточной длины, чтобы он мог связать первые две фигуры. Лучше где-нибудь сбоку, потом мы переместим.
Круг и вертикальный прямоугольник занимают слой A, горизонтальный прямоугольник — слой B (можете проверить). Поместите инструментом M вертикальный прямоугольник поверх горизонтального прямоугольника и круга. Теперь свяжите двумя осями все фигуры — выберите инструмент H (не путайте с инструментом F, «гвоздь») и щёлкните по двум точкам.
Запустите симуляцию. То, что получилось, упало и стало вести себя как взаимосвязанный набор деталей. Причем ни один из объектов не сталкивается ни с одним другим.
Заключительный эксперимент перед созданием нашего «шагохода». Верните связанные осями объекты в первоначальное положение (просто кнопкой «назад», естественно). Вновь поправьте систему столкновений, пусть все фигуры занимают один общий слой A.
Теперь «прибейте» верхнюю горизонтальную балку к «небесной тверди» «гвоздём» (инструментом F). Простите за используемую терминологию, но в данном случае подобные названия хорошо отражают суть того, что получается.
«Прибивать гвоздём» допустимо в любой точке, деталь считается жёстко зафиксированной и не проворачивается, как вокруг оси. Если позже понадобится, точку закрепления («гвоздь» или ось) можно будет выделить (инструментом M, например) и удалить.
Запустите симуляцию. Верхняя балка закреплена неподвижно, две нижние детали раскачиваются. Можете проверить — теперь круг и горизонтальная балка сталкиваются, поскольку занимают один слой и связаны не напрямую, а через промежуточный элемент.
Можно экспериментировать и дальше, но пора приступать к основной нашей задаче. Для хорошей кинематической схемы потребуются детали с точно выверенными размерами. Не беда, нам поможет сетка. Включите её отображение соответствующей кнопкой.
Обратите внимание, что детализация сетки (абсолютный размер каждой клетки) меняется при изменении масштаба. Давайте для определённости будем начинать работу в таком масштабе, при котором одна клетка равна 25 см. Тогда можно будет обозначать размер и в тех, и в других единицах измерения (и в клетках, и в сантиметрах).
Итак, нажмите на иконку «Новая сцена». Затем последовательно создайте фигуры следующих размеров:
- прямоугольник шириной 10 клеток и высотой 7 клеток (иными словами 250 см на 175 см);
- круг диаметром 6 клеток;
- вертикальный прямоугольник 1 на 6 клеток;
- вертикальный прямоугольник 1 на 14;
- вертикальный прямоугольник 1 на 15;
- горизонтальный прямоугольник 7 на 1;
- горизонтальный прямоугольник 14 на 1;
- горизонтальный прямоугольник 9 на 1.
Получившийся набор фигур должен выглядеть примерно так.
Теперь скомпонуйте детали нашего механизма, переместив их в нужные позиции.
Осталось закрепить основу (большой прямоугольник) и задать кинематические связи между всеми элементами конструкции.
Крепить объект к «небесной тверди» мы уже научились. Давайте научимся ещё добавлять ось прямо в середину круга. Щёлкните по нему правой кнопкой мыши и выберите «Geometry actions», а далее соответствующую команду. Этот способ удобен и может выручить при отключенной сетке.
Теперь круг связан осью с нижележащим объектом, в данном случае это большой прямоугольник 10×7.
Осталось поставить оси во все другие необходимые позиции. Увеличьте масштаб, появятся дополнительные линии, к перекрестью которых будет «приклеиваться» курсор. Расстояние от осей до краёв балок — половина поперечного сечения, то есть 12,5 см.
Напоследок добавим ещё один элемент, трассер (инструментом E) на кончик «ноги».
Общий вид конструкции теперь должен быть таким.
Прежде чем запускать симуляцию не забудьте поправить настройки учёта столкновений. Основа конструкции (большой прямоугольник) и круг должны располагаться в отдельном слое, например в слое B.
Нажмите на кнопку «Play». Механическая нога начала свободно покачиваться. Выберите инструмент D и покрутите «пальцем» колесо. Вы увидите, что механизм пришёл в движение, а кончик ноги описывает занятную траекторию.
В заключение хотелось бы сказать, что мы затронули лишь малую толику возможностей этой чудесной программы. В частности, благодаря тому, что каждый объект Algodoo способен хранить и использовать собственные скрипты, можно предусмотреть любые самые невообразимые связи между элементами проекта.
Источник