• Давным-давно, когда компьютеры были большими и медленными, а программы — маленькими и быстрыми…

LDPhysics

LDPhysics (машинный перевод! 🙁 )

Расширение физики с использованием Box2D.

AddChain(shape1,shape2)
Добавьте цепочку между двумя существующими формами.
shape1 Первая форма.
shape2 Вторая форма.
returns Название цепочки.

AddExplosion(posX,posY,power,damping,colour)
Сделайте взрыв, который состоит из частиц размером 50×20 кг, разбросанных на расстоянии более 500 мс.
posX Х-координата взрыва.
posY Координата Y взрыва.
power Сила взрыва, это начальная скорость частиц взрыва.
damping Демпфирование для взрыва, чем меньше это значение, тем больше диапазон взрыва (по умолчанию 10).
colour Необязательный цвет частиц взрыва («нет»).

AddFixedAnchor(posX,posY)
Добавьте новую небольшую прозрачную форму, которая будет использоваться как фиксированная опорная точка.
posX Координата X якоря.
posY Координата Y якоря.
returns Имя формы привязки.

AddFixedShape(shapeName,friction,restitution)
Добавьте существующую форму SmallBasic в физический движок в виде фиксированной (нединамической) формы с трением и реституцией, которая затрагивает фигуры, которые ее ударили.
shapeName Название формы.
friction Трение формы (обычно от 0 до 1).
restitution Форма реституции или bounciness (обычно от 0 до 1).
returns Никто.

AddInactiveShape(shapeName)
Добавьте существующую форму SmallBasic в физический движок как неактивную (нединамическую и невзаимодействующую) форму, которая перемещается только с помощью метода PanView.
shapeName Название формы.
returns Никто.

AddMovingAnchor(posX,posY)
Добавьте новую небольшую, прозрачную и высокую плотность, которая будет использоваться в качестве движущейся опорной точки.
posX Координата X якоря.
posY Координата Y якоря.
returns Имя формы привязки.

AddMovingShape(shapeName,friction,restitution,density)
Добавьте существующую форму SmallBasic в физический движок как движущуюся (динамическую) форму.
shapeName Название формы.
friction Трение формы (обычно от 0 до 1).
restitution Форма реституции или bounciness (обычно от 0 до 1).
Если для реституции установлено отрицательное значение, форма будет добавлена с очень небольшим размером, который может быть использован для добавления неактивного изображения, которое может быть сгруппировано в неправильной составной форме, соответствующей границе изображения.
density Плотность формы (по умолчанию 1).
returns Никто.

AddRope(shape1,shape2)
Добавьте веревку между двумя существующими фигурами.
shape1 Первая форма.
shape2 Вторая форма.
returns Имя веревки.

AttachShapes(shape1,shape2)
Соедините две фигуры, чтобы двигаться вместе. Формы соединены с дистанционным шарниром и могут немного раскачиваться, если они попали.
shape1 Имя первой формы.
shape2 Название второй формы.
returns Никто.

AttachShapesWithJoint(shape1,shape2,type,collide,parameters)
Соедините две фигуры, чтобы двигаться вместе как один с одним из нескольких типов суставов.
Они могут быть расширены и требуют ссылки на руководство Box2D.
Во многих случаях лучше избегать вращения формы для того, чтобы суставы вели себя по своему желанию.
Могут также применяться множественные суставы.
Методы используют начальные позиции фигуры, поэтому сначала установите их.
shape1 Имя первой формы.
shape2 Название второй формы.
type Один из следующих совместных типов.

«Расстояние» — поддерживать фиксированное расстояние между фигурами.
«Gear» — соединение призматических или револьверных суставов (ранее созданных) из двух форм.
«Линия» — перемещение фигур вдоль линии, первоначально соединяющей фигуры.
«Мышь» — переместите фигуру в соответствии с мышью (оба имени формы должны быть одинаковыми).
«Prismatic_H» — перемещается по вертикали вдоль линии между двумя фигурами.
«Prismatic_V» — перемещает фигуры горизонтально вдоль линии между двумя фигурами.
«Шкив» — система шкивов, одна фигура движется вверх, а другая движется вниз — позиционируйте фигуры изначально в крайних точках движения шкива.
«Револьвер» — фигуры могут вращаться друг вокруг друга.
collide Связанные формы могут взаимодействовать друг с другом «True» или «False» (по умолчанию).
parameters Необязательные параметры (по умолчанию «»), несколько параметров находятся в массиве.

«Расстояние» — коэффициент демпфирования (по умолчанию 0)
«Передача» — передаточное отношение, первое соединение, второе соединение (по умолчанию 1, суставы с автоматическим обнаружением)
«Линия» — направление X, направление Y, нижний перевод, верхний перевод (форма линии связи по умолчанию, без ограничений)
«Мышь» — максимальное ускорение, коэффициент демпфирования (по умолчанию 10000, 0,7)
«Prismatic_H» — направление X, направление Y, нижний перевод, верхний перевод (по умолчанию 1,0, без ограничений)
«Prismatic_V» — направление X, направление Y, нижний перевод, верхний перевод (по умолчанию 0,1, без ограничений)
«Шкив» — коэффициент шкива (блок и снасть) (по умолчанию 1)
«Револьвер» — нижний угол, верхний угол (по умолчанию без ограничений)
returns Совместное название.

AttachShapesWithRotation(shape1,shape2)
Соедините две фигуры, чтобы они перемещались вместе, но позволяли фигурам вращаться друг вокруг друга.
shape1 Имя первой формы.
shape2 Название второй формы.
returns Никто.

BoxShape(shapeName,x1,y1,x2,y2)
Установите фигуру, чтобы она оставалась внутри поля в представлении.
Это похоже на PanView, за исключением того, что представление автоматически поворачивается, чтобы сохранить указанную фигуру в области прямоугольника GraphicsWindow.
Только одна форма может быть помещена в коробку. Чтобы отключить форму, установите для параметра shapeName значение «».
shapeName Форма в поле или «».
x1 Левая координата окна.
y1 Верхняя координата y окна.
x2 Правая координата поля.
y2 Нижняя координата y окна.

BrakeTire(shapeName)
Нанесите тормоз на форму шины.
shapeName Форма шины для торможения.

ChainColour
Цвет, который будет использоваться для цепей.

DetachJoint(jointName)
Отсоедините две формы, которые ранее были соединены с суставом.
jointName Совместное название.
returns Никто.

DetachShapes(shape1,shape2)
Отключите две фигуры, которые были прикреплены ранее.
shape1 Имя первой формы.
shape2 Название второй формы.
returns Никто.

DisconnectShape(shapeName)
Отсоедините форму от физического двигателя, не удаляя форму.
shapeName Название формы.
returns Никто.

DoTimestep()
Выполните обновление по времени.
returns Никто.

FollowShapeX(shapeName)
Установите фигуру, чтобы она оставалась неподвижной в позиции X в представлении.
Это похоже на PanView, за исключением того, что представление автоматически поворачивается, чтобы сохранить указанную фигуру в постоянном визуальном месте X.
В X направлении можно следовать только одной форме. Чтобы отменить следующую форму, установите для параметра shapeName значение «».
shapeName Форма, которой следует следовать, или «».
returns Никто.

FollowShapeY(shapeName)
Установите фигуру, чтобы она оставалась неподвижной в позиции Y в представлении.
Это похоже на PanView, за исключением того, что представление автоматически поворачивается, чтобы сохранить указанную фигуру в постоянном визуальном местоположении Y.
В Y-направлении может следовать только одна форма. Чтобы отменить следующую форму, установите для параметра shapeName значение «».
shapeName Форма, которой следует следовать, или «».
returns Никто.

GetAllShapesAt(posX,posY)
Получите массив всех форм двигателя физики (если есть) в координатах ввода.
Координаты для этого метода — это координаты физического двигателя, если присутствует панорамирование.
posX Координата X.
posY Координата Y.
returns Массив имен форм или «».

GetAngle(shapeName)
Получите угол поворота для фигуры.
shapeName Название формы.
returns Угол поворота в градусах.

GetCollisions(shapeName)
Получите массив всех фигур, с которыми столкнулась указанная форма во время последнего DoTimestep ().
shapeName Форма для проверки на столкновение.
returns Массив всех фигур столкнулся с (может быть пустым «» или «Стена» для статического препятствия).

GetContacts(posX,posY,distance)
Получите список фигур, которые столкнулись на расстоянии определенной точки контакта.
posX Координату X контактного положения для проверки.
posY Координату Y контактной позиции для проверки.
distance Максимальное расстояние от контактной точки контакта.
returns Массив контактов, каждый из которых представляет собой массив из двух имен форм.

GetInertia(shapeName)
Получите момент инерции формы.
shapeName Название формы.
returns Инерция формы.

GetMass(shapeName)
Получите массу формы.
shapeName Название формы.
returns Масса формы.

GetPan()
Получите текущее смещение панорамирования, см. PanView, FollowShapeX (Y) и BoxShape.
Координаты мира = координаты экрана + смещение панорамирования.
returns 2-элементный массив с текущим смещением панорамирования.

GetPosition(shapeName)
Получить центр координат формы.
shapeName Название формы.
returns 2-элементный массив с центральным положением фигуры.

GetRotation(shapeName)
Получите скорость вращения фигуры.
shapeName Название формы.
returns Угловая скорость вращения градусов / с.

GetShapeAt(posX,posY)
Получите форму (если есть) в координатах ввода.
Координаты для этого метода являются координатами экрана, если присутствует панорамирование.
posX Координата X.
posY Координата Y.
returns Название формы в позиции ввода или «».

GetTireInformation(shapeName)
Получите информацию о шинах, включая:

Skid (если это значение превышает свойство AntiSkid, тогда шина заносит)
Crash (значение — скорость удара)
shapeName Форма шины.
returns Массив информации, индексированный информационным именем, например. «Мини».

GetTireProperties(shapeName)
Получите свойства шин, они включают:

AntiSkid (более высокое значение уменьшает скольжение)
Перетаскивание (более высокое значение увеличивает перемотку вперед / назад)
Тормоз (более высокое значение увеличивает мощность торможения)
Выровнять (более высокое значение восстанавливает рулевое управление быстрее)
BrakeStraighten (более высокое значение восстанавливает рулевое управление быстрее при торможении)
shapeName Форма шины.
returns Массив свойств, индексированный по имени свойства, например. «Анти занос».

GetVelocity(shapeName)
Получите скорость формы.
shapeName Название формы.
returns 2-элементный массив со скоростью формы.

GroupShapes(shape1,shape2)
Солидно группируйте две фигуры, чтобы двигаться вместе как одна. Shape1 добавляется к shape2, чтобы действовать как одна форма.
shape1 Имя первой формы.
shape2 Название второй формы.
returns Никто.

Help()
Эта функция предназначена для отображения этой справки.

Расширение использует Box2D (http://box2d.org) в качестве движка и обеспечивает интерфейс между ним и графическими возможностями SmallBasic.

В физику движения участвуют только фигуры, которые связаны с физическим движком, например, вы можете добавлять обычные фигуры (например, пистолет, а не подключать его к физическому движку). Как только форма подключена к двигателю, лучше всего взаимодействовать с ним с помощью методов, предоставляемых расширением. Все позиции находятся в пикселях SmallBasic GraphicsWindow и относятся к центрам фигур.

Формы изображения и текста рассматриваются как прямоугольники, а эллипсы — в виде кругов; Существует также треугольная и выпуклая многоугольная поддержка, но не линии. Изображения можно рассматривать как круги, устанавливая свойство LoadImagesAsCircles на «True».

Одной из проблем, с которыми сталкивается Box2D, являются небольшие быстродвижущиеся объекты, которые могут «туннелироваться» через другие формы без отклонения (см. Параметр SetBullet).

Другая проблема — это формы очень разных размеров и, следовательно, массовые, особенно большие формы, когда они соединены вместе. Может потребоваться изменить плотность для них (опции Anchor — это попытка автоматизировать это немного), в противном случае плотность по умолчанию 1 хороша. Сопротивляйтесь соблазну соединить слишком много фигур вместе.

Возможно, можно улучшить стабильность некоторых «трудных» моделей с помощью настроек TimestepControl, но по умолчанию для большинства случаев они выглядят хорошо.

Не называйте методы физики внутри подпрограмм событий SmallBasic напрямую, а установите флаги, которые можно обрабатывать в основном цикле игры.

Существуют примеры программ SmallBasic и руководство по началу работы, которое поставляется с расширением dll — это лучшее место для запуска.

Сообщайте об ошибках и проблемах на форуме SmallBasic (http://social.msdn.microsoft.com/Forums/en-US/smallbasic/threads), но сначала упростите свой код SmallBasic, чтобы изолировать проблему, прежде чем предоставлять короткий код «runnable» образец.
returns Никто.

LoadImagesAsCircles
Переключить, будут ли фигуры изображений загружаться в виде кругов — «True» или «False» (по умолчанию «False»).

MaxPolygonVertices
В физическом двигателе максимальное количество вершин на выпуклых многоугольниках (по умолчанию 8).

MaxProxies
В физическом двигателе максимальное количество прокси объектов (по умолчанию 1024).

MoveTire(shapeName,force)
Переместите форму шины, примените вперед или назад силу.
shapeName Форма шины должна двигаться.
force Сила применения, положительная — вперед, отрицательная — назад.

PanView(panHorizontal,panVertical)
Включите панораму, включая границы окна.
panHorizontal Панорамирование в горизонтальном направлении (отрицательное значение остается слева).
panVertical Панорамирование в вертикальном направлении (отрицательное значение вверх).
returns Никто.

PositionIterations
Итерации позиции физического двигателя (по умолчанию 2).

RayCast(shapeName,angle,distance)
Бросьте невидимый луч, чтобы обнаружить близость фигур.
shapeName Форма, от которой луч отбрасывается.
angle Угол в градусах для проверки, это также может быть массив углов.
distance Максимальное расстояние для проверки.
returns Массив результатов, индексированный по имени формы («Стена» для статического препятствия) со значением, равным его расстоянию.
Формы сортируются, чтобы скопировать их в первую очередь.
Если используется массив входных углов, возвращается только ближайшая форма для каждого угла, а значение представляет собой угол, а не расстояние.

ReadJson(fileName,scale,reverseY,stationary,offsetX,offsetY)
Читайте в json-скрипте, совместимом с R.U.B.E. И создать модель LDPhysics.
Подробнее см. https://www.iforce2d.net/rube.
fileName Полный путь к файлу json для чтения.
scale Масштабировать все фигуры, по умолчанию 1 (без масштабирования).
reverseY Переверните направление Y вниз («True» или «False»).
stationary Установите все формы в исходное состояние, совместные двигатели все еще включены («True» или «False»).
offsetX Добавьте смещение координаты x ко всем формам.
offsetY Добавьте смещение координаты y ко всем формам, особенно полезно, когда установлено значение reverseY.
returns Текстовый массив, содержащий команды LDPhysics, используемые для создания модели.

RemoveChain(shapeName)
Удалите цепь.
shapeName Название цепочки.
returns Никто.

RemoveFrozen()
Удаляет все замороженные фигуры — вне AABB для двигателя.
returns Никто.

RemoveRope(shapeName)
Снимите веревку.
shapeName Имя веревки.
returns Никто.

RemoveShape(shapeName)
Удалите фигуру.
shapeName Название формы.
returns Никто.

Reset()
Сбросьте (удалите все прикрепленные фигуры с физическим движком).
returns Никто.

RopeColour
Цвет, который будет использоваться для канатов.

Scaling
Масштабирование физического ядра (пиксель / м, значение по умолчанию 10). Не рекомендуется менять это.

SetAABB(minX,maxX,minY,maxY)
Физический движок AABB (ориентированный по оси ограничивающий прямоугольник). Единицы — это единицы двигателя м. После установки требуется сброс. Не рекомендуется менять это.
minX Левая координата юниверса (по умолчанию -100).
maxX Правая координата юниверса (по умолчанию 200).
minY Верхняя координата юниверса (по умолчанию -100).
maxY Нижняя координата юниверса (по умолчанию 200).
returns Никто.

SetAngle(shapeName,angle)
Сбросьте угол поворота для фигуры.
shapeName Название формы.
angle Угол поворота в градусах.
returns Никто.

SetBoundaries(left,right,top,bottom)
Установите твердые границы (расположение границы вне GraphicsWindow удаляет).
left Значение левой границы X.
right Правое граничное значение X.
top Верхнее граничное значение Y.
bottom Нижнее (основное) значение границы Y.
returns Никто.

SetBullet(shapeName)
Установите фигуру в виде пули. Это предотвращает «туннелирование» быстродвижущихся мелких объектов за счет производительности.
shapeName Название формы.
returns Никто.

SetDamping(shapeName,linear,angular)
Установите коэффициент затухания для фигуры (по умолчанию 0).
shapeName Форма для изменения.
linear Линейный коэффициент затухания.
angular Угловой коэффициент затухания.
returns Никто.

SetForce(shapeName,forceX,forceY)
Установите силу для применения к фигуре (запомните F = ma).
shapeName Форма для изменения.
forceX X составляющей силы.
forceY Y составляющей силы.
returns Никто.

SetGravity(gravX,gravY)
Установите направление тяжести и величину (по умолчанию 0,100).
gravX Х компонент тяжести.
gravY Y-составляющая силы тяжести.
returns Никто.

SetGroup(shapeName,group,mask)
Контроль, который спрайты взаимодействуют (сталкиваются) с другими формами.
shapeName Форма для изменения.
group Группа, к которой принадлежит текущая форма (по умолчанию 0). Это должно быть целое число от 0 до 15.
mask Массив групп, с которыми эта форма столкнется (по умолчанию все группы 0,1,2, …, 14,15).
Чтобы форма могла взаимодействовать только с группами 0, 1 и 4, было бы «1 = 0; 2 = 1; 3 = 4;».
returns Никто.

SetImpulse(shapeName,impulseX,impulseY)
Установите импульс к форме (удар).
shapeName Форма для изменения.
impulseX X компонент импульса.
impulseY Y компонента импульса.
returns Никто.

SetJointMotor(jointName,speed,maxForce)
Установите двигатель для выбранных соединений (Line, Prismatic_H, Prismatic_V и Revolute).
jointName Совместное название.
speed Требуемая скорость двигателя.
maxForce Максимальная сила двигателя (крутящий момент для Revolute).
Значение нуля отключает двигатель.

SetPosition(shapeName,posX,posY,angle)
Сбросьте положение фигуры.
shapeName Форма для изменения.
posX X компонентный центр формы.
posY Y.
angle Угол поворота в градусах.
returns Никто.

SetRotation(shapeName,rotation)
Установите скорость вращения фигуры.
shapeName Форма для изменения.
rotation Угловая скорость вращения градусов / с.
returns Никто.

SetShapeGravity(shapeName,gravX,gravY)
Установите направление гравитации и величину для отдельной фигуры (по умолчанию 0,100).
shapeName Форма для изменения.
gravX Х компонент тяжести.
gravY Y-составляющая силы тяжести.
returns Никто.

SetTire(shapeName)
Установите объект, который будет действовать как управляемая шина для игры сверху вниз.
Обычно гравитация будет равна 0, и форма должна быть добавлена к двигателю.
Объект должен быть первоначально расположен лицом вперед к дисплею.
shapeName Форма, чтобы сделать шину.

SetTireProperties(shapeName,properties)
Установите свойства шин, в том числе:

AntiSkid (более высокое значение уменьшает скольжение)
Перетаскивание (более высокое значение увеличивает перемотку вперед / назад)
Тормоз (более высокое значение увеличивает мощность торможения)
Выровнять (более высокое значение восстанавливает блеск быстрее)
BrakeStraighten (более высокое значение восстанавливает более быстрое торможение при торможении)
shapeName Форма шины.
properties Массив из одного или нескольких свойств для установки.
Индекс является одним из свойств (чувствительным к регистру), а значение является значением свойства.

SetTorque(shapeName,torque)
Установите крутящий момент на фигуру (вращательный удар).
shapeName Форма для изменения.
torque Крутящий момент для применения.
returns Никто.

SetVelocity(shapeName,velX,velY)
Установите скорость фигуры.
shapeName Форма для изменения.
velX Х-компонента скорости.
velY Y-составляющей скорости.
returns Никто.

TimeStep
Размер тайм-файла физического двигателя (по умолчанию 0.025).

TimestepControl(timestep,velocityIterations,positionIterations)
Изменение параметров управления по умолчанию timestep — также может быть задано с использованием отдельных параметров.
timestep Временной шаг (по умолчанию 0.025).
velocityIterations Итерации скорости (по умолчанию 6).
positionIterations Итерации позиций (по умолчанию 2).
returns Никто.

ToggleMoving(shapeName)
Переключить движущуюся фигуру, которая будет фиксированной, и наоборот.
Этот метод также устанавливает, что вращение включено или выключено для соответствия, если оно движется или фиксируется.
shapeName Название формы.

ToggleRotation(shapeName)
Переключите фигуру, чтобы она не вращается, и наоборот.
Этот метод переключает свойство вращения для фиксированных и движущихся фигур.
shapeName Название формы.

ToggleSensor(shapeName)
Переключите фигуру в качестве датчика и наоборот.
Форма датчика не взаимодействует с другими формами, но все же предоставляет данные о столкновении.
shapeName Название формы.

TurnTire(shapeName,torque)
Поверните форму шины, поверните влево или вправо.
shapeName Форма шины поворачивается.
torque Крутящий момент, сила вращения для применения, положительный — поворот направо, отрицательный — поворот влево.

UngroupShapes(shape1,shape2)
Удалите сопряжение группы формы.
shape1 Имя первой формы.
shape2 Название второй формы.
returns Никто.

UnsetBullet(shapeName)
Отсоедините форму как пулю. Это возвращает форму к нормальному обнаружению столкновений.
shapeName Название формы.
returns Никто.

VelocityIterations
Итерации скорости физического двигателя (по умолчанию 6).

VelocityThreshold
Порог скорости физического двигателя для липких стен неупругих столкновений (по умолчанию 1).

WakeAll()
Просыпайтесь во всех спящих формах — формируйте сон из-за отсутствия приложенных сил или контактов. Они автоматически срабатывают при любом контакте или приложенной силе, поэтому это действие редко требуется.
returns Никто.

WriteJson(fileName)
Выписать json-скрипт, совместимый с R.U.B.E. От текущей модели LDPhysics.
Подробнее см. https://www.iforce2d.net/rube.
fileName Полный путь к файлу json для создания.


Список всех классов библиотеки LitDev


Поделиться: