Physicsjoint
Содержание
Объект «Physicsjoint» («Физ_соединение»)
Физические соединения «Physicsjoint» используются для присоединения тела к миру или другим телам. Типичный игровой пример рэгдолы, качели и подъемные тали. Соединения могут сочетаться множеством способов, что позволяет получить множество интересных движений.
Некоторые соединения предоставляют ограничения, при помощи которых вы можете контролировать диапазон возможный движений этого соединения. Некоторые предоставляют двигатели-мускулы, которые можно использовать для приведения соединения в движение с заданной скоростью и силой/вращающим моментом.
«Соединение» используется для скрепления вместе двух и более тел. Box2D поддерживает несколько типов соединений: «болтовое» (revolute), «призматическое» (prismatic), «жесткий отрезок» (distance), и другие. Некоторые соединения могут иметь ограничители (limits) и мускулы (motors).
Объекты «Physicsjoint» не имеют ресурс и обязательно должны быть помещены в физический мир.
Как задать Physicsjoint:
1) В физ_мире создается новый объект Physicsjoint (физикс_джоинт). Ресурс не задается.
2) В параметре Physicsjoint задается тип джоинта, а также параметры (плюсиком добавляется группа). На данный момент создан только один тип соединений DistanceJoint. Параметр дистанция можно не задавать.
3) В этот новосозданный объект помещаются два физ_объекта. Физ_объекты уже должны находиться в нужном положении, а точки соединения — это точки пивота. Дистанция между объектами — это расстояние между точками пивота.
4) Объект физикс_джоинт может находится в двух состояниях: active (тела соединены), inactive (тела разъединены), который пока только задается либо машиной, либо кнопкой. Необходимо помнить, что если задавать для Physicsjoint состояние active машиной сразу после запуска экрана, то нужно ставить паузу не менее 50 мс. При переходе из экрана на экран, обязательно надо задавать состояние inactive.
Типы соединений:
1.Соединение “DistanceJoint” ("жесткий отрезок")
Самым простым типом соединения является соединение "жесткий отрезок", которое означает, что расстояние между двумя точками двух тел всегда должно быть постоянным. При создании соединения "жесткий отрезок" тела уже должны находиться в нужном положении. Затем указываются якорные точки в мировых координатах. Первая якорная точка присоединяется к первому телу, а вторая соответственно ко второму. Расстояние между точками подразумевает длину жесткого отрезка.
- модификаторы :
могут использоваться как модификаторы объектов входящих в группу джоинта
- дистанция:
не используется( дистанция между объектами определяется автоматически от точек пиота объектов, во время включение джоинта)
Включается джоинт внешней машиной
например:
по клику на машину bag2 мы включаем наш джоинт new_object ( аналогично для всех джоинтов)
до включения джоинта
после включения джоинта
2) Болтовое соединение "RevoluteJoint"
Болтовое соединение можно представить, как будто в определенной точке мы просверлили отверстие через оба тела и вставили в него болт, вокруг которого они могут вращаться.
- модификаторы :
могут использоваться как модификаторы объектов входящих в группу джоинта
- положение якоря вокруг которого вращаются объекты
anchor x координата "х" якоря anchor y координата "y" якоря
координаты якоря это координаты точки соединения объектов в момент включения джоинта
Например У нас есть два объекта apple_1, apple_2 и мы хотим соединить их болтовым соединением в точке пересечения х(20) y(250)
Машина включает джоинт (включать надо не в первоночальном состоянии).
Включив въювер мы получаем вращение и движение объектов вместе, и вокруг якоря.
3) Призматическое соединение "PrismaticJoint"
Призматическое соединение позволяет телам перемещаться лишь относительно определенной оси (заданной относительно тел) и не допускает вращения этих тел. Поэтому, призматическое соединение имеет одну степень свободы: перемещение второго тела относительно первого.
4) Талевое соединение (Шкив соединение) "PulleyJoint"
Талевые соединения используются для создания идеальных талей. Тали соединяют два тела с землей и друг с другом. Общая длина двух сегментов талей фиксирована.
- groundA x (координата х точки соединения первого тела ( тела находящего выше в списке джоинта ,в нашем случае apple_2))
- groundA y (координата y точки соединения первого тела)
- groundB x (координата х точки соединения второго тела (apple_1))
- groundB y (координата y точки соединения второго тела )
- ratio упругость линий соединения тел, 1> ratio ≥ 0 падает упругость соединения первого тела и возростает у второго, <1