Physicsjoint — различия между версиями

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
(Основные параметры)
м
 
(не показано 36 промежуточных версий 2 участников)
Строка 1: Строка 1:
'''Physicsjoint (Физические соединения)''' - тип объекта, который используются для присоединения тела к миру или другим телам.  
+
'''Physicsjoint (Физические соединения)''' - тип [[Object|объект]]а, который используются для присоединения тела к миру или другим телам.  
 
Типичный игровой пример рэгдолы, качели и подъемные тали. Соединения могут сочетаться множеством способов, что позволяет получить множество интересных движений.
 
Типичный игровой пример рэгдолы, качели и подъемные тали. Соединения могут сочетаться множеством способов, что позволяет получить множество интересных движений.
  
Строка 11: Строка 11:
 
== Добавляемые параметры ==
 
== Добавляемые параметры ==
 
[[Файл:Physicsjoint_2.png|right]]
 
[[Файл:Physicsjoint_2.png|right]]
 +
[[Файл:Physicsjoint_3.png|right]]
 
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши.
 
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши.
  
[[Файл:+.png]]
+
[[Файл:+.png]] '''distanceJoint''' - Соединение по типу "жесткий отрезок".
 +
*'''дистанция''' - Дистанция между объектами (считается от точек пивота).
 +
 
 +
[[Файл:+.png]] '''revoluteJoint''' - Болтовое соединение.
 +
*'''anchor x''' - Координата якоря "x".
 +
*'''anchor y''' - Координата якоря "y".
 +
 
 +
[[Файл:+.png]] '''pulleyJoint''' - Талевое соединение.
 +
*'''groundA x''' - Координата "x" точки соединения первого тела.
 +
*'''groundA y''' - Координата "y" точки соединения первого тела.
 +
*'''groundB x''' - Координата "x" точки соединения второго тела.
 +
*'''groundB y''' - Координата "y" точки соединения второго тела.
 +
*'''ratio''' -  Упругость линий соединения тел.
 +
 
 +
[[Файл:+.png]] '''prismaticJoint''' - Призматическое соединение.
 +
*'''world axis x''' - Доступная ось "x" перемещения для динамического подобъекта джоинта.
 +
*'''world axis y''' - Доступная ось "y" перемещения для динамического подобъекта джоинта.
 +
*'''lower translation''' - Минимальное расстояние динамического объекта от статического.
 +
*'''upper translation''' - Максимальное расстояние динамического объекта от статического.
 +
*'''enable limit''' - "Yes", "No" - включить, выключить ограничения по расстоянию.
 +
*'''max motor force''' - Ограничение по ускорению динамического объекта.
 +
*'''motor speed''' - Ограничение по скорости объекта.
 +
*'''enable motor''' - "Yes", "No" - включить, выключить ограничения по скорости и ускорению.
 +
 
 +
[[Файл:+.png]] '''gearJoint''' - Передаточное соединение.
 +
*'''revolute joint''' - Болтовое соединение которое входит в состав передаточного.
 +
*'''prismatic joint''' - Призматическое соединение которое входит в состав передаточного.
 +
*'''ratio''' - Коэффициент передачи.
  
 
== Состояния ==
 
== Состояния ==
 
Объект '''Physicsjoint''' обладает рядом состояний:
 
Объект '''Physicsjoint''' обладает рядом состояний:
 +
* '''active''' - Соединить тела.
 +
* '''inactive''' - Разъединить тела.
 +
 +
Для адекватной работы '''Physicsjoint''' при выходе с экрана,их надо переводить в состояние '''inactive'''.
  
 +
Если этого не сделать, при следующем заходе он работает некорректно.
  
 
== Пример ==
 
== Пример ==
«Соединение» используется для скрепления вместе двух и более тел. Box2D поддерживает несколько типов соединений: «болтовое» (revolute), «призматическое» (prismatic), «жесткий отрезок» (distance), и другие. Некоторые соединения могут иметь ограничители (limits) и мускулы (motors).
+
[[Файл:1 1 phyz.jpg|right]]
 
+
'''Physicsjoint''' используется для скрепления вместе двух и более тел. Box2D поддерживает несколько типов соединений: «болтовое» (revolute), «призматическое» (prismatic), «жесткий отрезок» (distance), и другие. Некоторые соединения могут иметь ограничители (limits) и мускулы (motors).
Объекты «Physicsjoint» не имеют ресурс и обязательно должны быть помещены в физический мир.
 
  
[[Файл:1 1 phyz.jpg]]
+
Объекты '''Physicsjoint''' не имеют ресурс и обязательно должны быть помещены в физический мир.
  
 
'''Как задать Physicsjoint:'''
 
'''Как задать Physicsjoint:'''
Строка 37: Строка 69:
 
Необходимо помнить, что если задавать для Physicsjoint состояние active машиной сразу после запуска экрана, то нужно ставить паузу не менее 50 мс. При переходе из экрана на экран, обязательно надо задавать состояние  inactive.
 
Необходимо помнить, что если задавать для Physicsjoint состояние active машиной сразу после запуска экрана, то нужно ставить паузу не менее 50 мс. При переходе из экрана на экран, обязательно надо задавать состояние  inactive.
  
[[Файл:666_phyz.JPG]]
+
[[Файл:666_phyz.JPG]]
 +
  
 
=== Типы соединений: ===
 
=== Типы соединений: ===
 +
 +
 
==== Соединение “DistanceJoint” ("жесткий отрезок") ====
 
==== Соединение “DistanceJoint” ("жесткий отрезок") ====
 
Самым простым типом соединения является соединение "жесткий отрезок", которое означает, что расстояние между двумя точками двух тел всегда должно быть постоянным. При создании соединения "жесткий отрезок" тела уже должны находиться в нужном положении. Затем указываются якорные точки в мировых координатах. Первая якорная точка присоединяется к первому телу, а вторая соответственно ко второму. Расстояние между точками подразумевает длину жесткого отрезка.
 
Самым простым типом соединения является соединение "жесткий отрезок", которое означает, что расстояние между двумя точками двух тел всегда должно быть постоянным. При создании соединения "жесткий отрезок" тела уже должны находиться в нужном положении. Затем указываются якорные точки в мировых координатах. Первая якорная точка присоединяется к первому телу, а вторая соответственно ко второму. Расстояние между точками подразумевает длину жесткого отрезка.
Строка 48: Строка 83:
  
  
* модификаторы :  
+
* '''модификаторы''' :  
могут использоваться как модификаторы объектов входящих в группу джоинта
+
** могут использоваться как модификаторы объектов входящих в группу джоинта;
* дистанция:
+
* '''дистанция''':
не используется( дистанция между объектами определяется автоматически от точек пиота объектов, во время включение джоинта)
+
** не используется( дистанция между объектами определяется автоматически от точек пиота объектов, во время включение джоинта);
 
   
 
   
 
'''Включается джоинт внешней машиной'''
 
'''Включается джоинт внешней машиной'''
Строка 67: Строка 102:
  
 
[[Файл:Джоинт9.PNG|500px]]
 
[[Файл:Джоинт9.PNG|500px]]
 +
 +
  
  
Строка 78: Строка 115:
 
[[Файл:Джоинт10.PNG]][[Файл:Джоинт11.PNG]][[Файл:Джоинт19.PNG]]
 
[[Файл:Джоинт10.PNG]][[Файл:Джоинт11.PNG]][[Файл:Джоинт19.PNG]]
  
* модификаторы :  
+
* '''модификаторы:''' 
**могут использоваться как модификаторы объектов входящих в группу джоинта
+
**могут использоваться как модификаторы объектов входящих в группу джоинта;
* положение якоря вокруг которого вращаются объекты
+
* '''положение якоря вокруг которого вращаются объекты:'''
**anchor x координата "х" якоря
+
**anchor x координата "х" якоря;
**anchor y координата "y" якоря
+
**anchor y координата "y" якоря;
координаты якоря это координаты точки соединения объектов в момент включения джоинта
+
Координаты якоря это координаты точки соединения объектов в момент включения джоинта.
  
 
Например
 
Например
 
У нас есть два объекта apple_1, apple_2 и мы хотим соединить их болтовым соединением в точке пересечения
 
У нас есть два объекта apple_1, apple_2 и мы хотим соединить их болтовым соединением в точке пересечения
х(20) y(250)
+
х(20) y(250).
  
 
[[Файл:Джоинт16.PNG|500px]]
 
[[Файл:Джоинт16.PNG|500px]]
Строка 98: Строка 135:
  
 
[[Файл:Джоинт15.PNG|500px]]
 
[[Файл:Джоинт15.PNG|500px]]
 +
 +
  
  
Строка 112: Строка 151:
 
В нашем случае apple_2 статический а apple_1 динамический
 
В нашем случае apple_2 статический а apple_1 динамический
  
* world axis x - доступная ось х перемещения для динамического подобъекта джоинта
+
* world axis x - доступная ось х перемещения для динамического подобъекта джоинта;
* world axis у - доступная ось у перемещения для динамического подобъекта джоинта
+
* world axis у - доступная ось у перемещения для динамического подобъекта джоинта; (если ось "у" = 0 то объетк двигается только по оси х, "х" = 0 то объект двигается только по оси у, если оба 1, то объект двигается по диагонали)
(если ось "у" = 0 то объетк двигается только по оси х, "х" = 0 то объетк двигается только по оси у, если оба 1, то объект двигается по диагонали)
+
* lower translation - минимальное расстояние нашего динамического объекта от статического;
* lower translation - минимальное растояние нашего динамического объекта от статического.
+
* upper translation - максимальное расстояние нашего динамического объекта от статического; (у нас стоит интервал от -250 до 250, динамическое тело может перемещаться от точки с координатой -250 до 250 ,( "х" ,"у","х,у" в зависимости от того какие координаты мы поставили доступными)
* upper translation - максимальное растояние нашего динамического объекта от статического.
+
* enable limit - "уеs","no" - включить, выключить ограничения по расстоянию;
(у нас стоит интервал от -250 до 250, динамическое телдо может перемещатся от точки с координатой -250 до 250 ,( "х" ,"у","х,у" взависимости от того какие координаты мы поставили доступными)
+
* max motor forse - ограничение по ускорению динамического объекта;
* enable limit - "уеs","no" - включить, выключить ограничения по растоянию.
+
* motor speed - ограничение по скорости объекта;
* max motor forse - ограничение по ускорению динамического объекта
+
* enable motor -  "уеs","no" - включить, выключить ограничения по скорости и ускорению;
* motor speed - ограничение по скорости объекта
 
* enable motor -  "уеs","no" - включить, выключить ограничения по скорости и ускорению.
 
  
Для примера мы взяли призматический джоинт с такими характеристиками  
+
Для примера мы взяли призматический джоинт с такими характеристиками.
  
 
[[Файл:Джоинт25.PNG]]
 
[[Файл:Джоинт25.PNG]]
  
Наш динамический объект может двигаться только по оси "х" относительно статического,  возможность перемещаться  от координата "-25" до "25"
+
Наш динамический объект может двигаться только по оси "х" относительно статического,  возможность перемещаться  от координата "-25" до "25".
 
Ограничение по ускорению "10" а по скорости "25" , все ограничения включены.
 
Ограничение по ускорению "10" а по скорости "25" , все ограничения включены.
Тогда мы получаем такое движение
+
Тогда мы получаем такое движение.
  
 
[[Файл:Джоинт26.PNG|500px]]
 
[[Файл:Джоинт26.PNG|500px]]
 +
 +
  
  
Строка 145: Строка 184:
 
[[Файл:Джоинт17.PNG]][[Файл:Джоинт20.PNG]]
 
[[Файл:Джоинт17.PNG]][[Файл:Джоинт20.PNG]]
  
* groundA x (координата х точки соединения первого тела ( тела находящего выше в списке джоинта ,в нашем случае apple_2))
+
* groundA x (координата х точки соединения первого тела ( тела находящего выше в списке джоинта ,в нашем случае apple_2));
* groundA y (координата y точки соединения первого тела)
+
* groundA y (координата y точки соединения первого тела);
* groundB x (координата х точки соединения второго тела (apple_1))
+
* groundB x (координата х точки соединения второго тела (apple_1));
* groundB y (координата y точки соединения второго тела )
+
* groundB y (координата y точки соединения второго тела );
* ratio упругость линий соединения тел, 1> ratio&nbsp;&nbsp;&ge;&nbsp;&nbsp;0  падает упругость соединения первого тела и возростает у второго,ratio <1 то наоборот, при ratio=1 упругость одинаковая.
+
* ratio упругость линий соединения тел, 1> ratio&nbsp;&nbsp;&ge;&nbsp;&nbsp;0  падает упругость соединения первого тела и возрастает у второго,ratio <1 то наоборот, при ratio=1 упругость одинаковая;
  
 
[[Файл:Джоинт22.PNG|800px]]
 
[[Файл:Джоинт22.PNG|800px]]
 +
 +
  
  
Строка 164: Строка 205:
 
[[Файл:Джоинт27.PNG]][[Файл:Джоинт28.PNG]]
 
[[Файл:Джоинт27.PNG]][[Файл:Джоинт28.PNG]]
  
* Revolute joint - болтовое соединение которое входит в состав  передаточного. Его параметры смотри выше.
+
* Revolute joint - болтовое соединение которое входит в состав  передаточного. Его параметры смотри выше;
* Prismatic joint - призматическое соединение которое входит в состав передаточного. Его параметры смотри выше.
+
* Prismatic joint - призматическое соединение которое входит в состав передаточного. Его параметры смотри выше;
* Ratio - коэффициент передачи. (Может быть (+) движутся и вращаются в одном направлении, и (-) движется и вращаются в противоположные стороны относительно друг,друга.
+
* Ratio - коэффициент передачи. (Может быть (+) движутся и вращаются в одном направлении, и (-) движется и вращаются в противоположные стороны относительно друг,друга;
  
 
В болтовом и призматическом соединении первым в списке должен '''обязательно''' стоять статический объект, а второй динамический.
 
В болтовом и призматическом соединении первым в списке должен '''обязательно''' стоять статический объект, а второй динамический.
Строка 172: Строка 213:
 
[[Файл:Джоинт29.PNG]]
 
[[Файл:Джоинт29.PNG]]
  
И в машине они должны включатся '''строго в таком порядке'''
+
И в машине они должны включатся '''строго в таком порядке'''.
  
 
[[Файл:Джоинт30.PNG]]
 
[[Файл:Джоинт30.PNG]]
  
 
[[Файл:Джоинт31.PNG|500px]][[Файл:Джоинт32.PNG|500px]]
 
[[Файл:Джоинт31.PNG|500px]][[Файл:Джоинт32.PNG|500px]]
 +
 +
 +
[[Category:Physicsworld]]

Текущая версия на 09:36, 16 сентября 2014

Physicsjoint (Физические соединения) - тип объекта, который используются для присоединения тела к миру или другим телам. Типичный игровой пример рэгдолы, качели и подъемные тали. Соединения могут сочетаться множеством способов, что позволяет получить множество интересных движений.

Некоторые соединения предоставляют ограничения, при помощи которых вы можете контролировать диапазон возможных движений этого соединения. Некоторые предоставляют двигатели-мускулы, которые можно использовать для приведения соединения в движение с заданной скоростью, силой и вращающим моментом.

Physicsjoint 1.jpg


Общие параметры

Смотреть описание Object.

Добавляемые параметры

Physicsjoint 2.png
Physicsjoint 3.png

Меню выбора Добавляемые параметры к объектам активируется по правой кнопки мыши.

+.png distanceJoint - Соединение по типу "жесткий отрезок".

  • дистанция - Дистанция между объектами (считается от точек пивота).

+.png revoluteJoint - Болтовое соединение.

  • anchor x - Координата якоря "x".
  • anchor y - Координата якоря "y".

+.png pulleyJoint - Талевое соединение.

  • groundA x - Координата "x" точки соединения первого тела.
  • groundA y - Координата "y" точки соединения первого тела.
  • groundB x - Координата "x" точки соединения второго тела.
  • groundB y - Координата "y" точки соединения второго тела.
  • ratio - Упругость линий соединения тел.

+.png prismaticJoint - Призматическое соединение.

  • world axis x - Доступная ось "x" перемещения для динамического подобъекта джоинта.
  • world axis y - Доступная ось "y" перемещения для динамического подобъекта джоинта.
  • lower translation - Минимальное расстояние динамического объекта от статического.
  • upper translation - Максимальное расстояние динамического объекта от статического.
  • enable limit - "Yes", "No" - включить, выключить ограничения по расстоянию.
  • max motor force - Ограничение по ускорению динамического объекта.
  • motor speed - Ограничение по скорости объекта.
  • enable motor - "Yes", "No" - включить, выключить ограничения по скорости и ускорению.

+.png gearJoint - Передаточное соединение.

  • revolute joint - Болтовое соединение которое входит в состав передаточного.
  • prismatic joint - Призматическое соединение которое входит в состав передаточного.
  • ratio - Коэффициент передачи.

Состояния

Объект Physicsjoint обладает рядом состояний:

  • active - Соединить тела.
  • inactive - Разъединить тела.

Для адекватной работы Physicsjoint при выходе с экрана,их надо переводить в состояние inactive.

Если этого не сделать, при следующем заходе он работает некорректно.

Пример

1 1 phyz.jpg

Physicsjoint используется для скрепления вместе двух и более тел. Box2D поддерживает несколько типов соединений: «болтовое» (revolute), «призматическое» (prismatic), «жесткий отрезок» (distance), и другие. Некоторые соединения могут иметь ограничители (limits) и мускулы (motors).

Объекты Physicsjoint не имеют ресурс и обязательно должны быть помещены в физический мир.

Как задать Physicsjoint:

1) В физ_мире создается новый объект Physicsjoint (физикс_джоинт). Ресурс не задается.

2) В параметре Physicsjoint задается тип джоинта, а также параметры (плюсиком добавляется группа). На данный момент создан только один тип соединений DistanceJoint. Параметр дистанция можно не задавать.

3) В этот новосозданный объект помещаются два физ_объекта. Физ_объекты уже должны находиться в нужном положении, а точки соединения — это точки пивота. Дистанция между объектами — это расстояние между точками пивота.

4) Объект физикс_джоинт может находится в двух состояниях: active (тела соединены), inactive (тела разъединены), который пока только задается либо машиной, либо кнопкой. Необходимо помнить, что если задавать для Physicsjoint состояние active машиной сразу после запуска экрана, то нужно ставить паузу не менее 50 мс. При переходе из экрана на экран, обязательно надо задавать состояние inactive.

666 phyz.JPG


Типы соединений:

Соединение “DistanceJoint” ("жесткий отрезок")

Самым простым типом соединения является соединение "жесткий отрезок", которое означает, что расстояние между двумя точками двух тел всегда должно быть постоянным. При создании соединения "жесткий отрезок" тела уже должны находиться в нужном положении. Затем указываются якорные точки в мировых координатах. Первая якорная точка присоединяется к первому телу, а вторая соответственно ко второму. Расстояние между точками подразумевает длину жесткого отрезка.

999.JPG

Джоинт5.PNG Джоинт6.PNGДжоинт18.PNG


  • модификаторы :
    • могут использоваться как модификаторы объектов входящих в группу джоинта;
  • дистанция:
    • не используется( дистанция между объектами определяется автоматически от точек пиота объектов, во время включение джоинта);

Включается джоинт внешней машиной например:

Джоинт7.PNG

по клику на машину bag2 мы включаем наш джоинт new_object ( аналогично для всех джоинтов)

до включения джоинта

Джоинт8.PNG

после включения джоинта

Джоинт9.PNG




Болтовое соединение "RevoluteJoint"

Болтовое соединение можно представить, как будто в определенной точке мы просверлили отверстие через оба тела и вставили в него болт, вокруг которого они могут вращаться.

Джоинт.PNG

Джоинт10.PNGДжоинт11.PNGДжоинт19.PNG

  • модификаторы:
    • могут использоваться как модификаторы объектов входящих в группу джоинта;
  • положение якоря вокруг которого вращаются объекты:
    • anchor x координата "х" якоря;
    • anchor y координата "y" якоря;

Координаты якоря это координаты точки соединения объектов в момент включения джоинта.

Например У нас есть два объекта apple_1, apple_2 и мы хотим соединить их болтовым соединением в точке пересечения х(20) y(250).

Джоинт16.PNG

Машина включает джоинт (включать надо не в первоночальном состоянии).

Джоинт14.PNG

Включив въювер мы получаем вращение и движение объектов вместе, и вокруг якоря.

Джоинт15.PNG




Призматическое соединение "PrismaticJoint"

Призматическое соединение позволяет телам перемещаться лишь относительно определенной оси (заданной относительно тел) и не допускает вращения этих тел. Поэтому, призматическое соединение имеет одну степень свободы: перемещение второго тела относительно первого.

Джоинт2.PNG

Джоинт23.PNGДжоинт24.PNG

Что-бы наглядно увидеть работу PrismaticJoint , надо чтобы один его подобъект был статичным а второй динамичным В нашем случае apple_2 статический а apple_1 динамический

  • world axis x - доступная ось х перемещения для динамического подобъекта джоинта;
  • world axis у - доступная ось у перемещения для динамического подобъекта джоинта; (если ось "у" = 0 то объетк двигается только по оси х, "х" = 0 то объект двигается только по оси у, если оба 1, то объект двигается по диагонали)
  • lower translation - минимальное расстояние нашего динамического объекта от статического;
  • upper translation - максимальное расстояние нашего динамического объекта от статического; (у нас стоит интервал от -250 до 250, динамическое тело может перемещаться от точки с координатой -250 до 250 ,( "х" ,"у","х,у" в зависимости от того какие координаты мы поставили доступными)
  • enable limit - "уеs","no" - включить, выключить ограничения по расстоянию;
  • max motor forse - ограничение по ускорению динамического объекта;
  • motor speed - ограничение по скорости объекта;
  • enable motor - "уеs","no" - включить, выключить ограничения по скорости и ускорению;

Для примера мы взяли призматический джоинт с такими характеристиками.

Джоинт25.PNG

Наш динамический объект может двигаться только по оси "х" относительно статического, возможность перемещаться от координата "-25" до "25". Ограничение по ускорению "10" а по скорости "25" , все ограничения включены. Тогда мы получаем такое движение.

Джоинт26.PNG




Талевое соединение (Шкив соединение) "PulleyJoint"

Талевые соединения используются для создания идеальных талей. Тали соединяют два тела с землей и друг с другом. Общая длина двух сегментов талей фиксирована.

Джоинт3.PNG

Джоинт4.PNG

Джоинт17.PNGДжоинт20.PNG

  • groundA x (координата х точки соединения первого тела ( тела находящего выше в списке джоинта ,в нашем случае apple_2));
  • groundA y (координата y точки соединения первого тела);
  • groundB x (координата х точки соединения второго тела (apple_1));
  • groundB y (координата y точки соединения второго тела );
  • ratio упругость линий соединения тел, 1> ratio  ≥  0 падает упругость соединения первого тела и возрастает у второго,ratio <1 то наоборот, при ratio=1 упругость одинаковая;

Джоинт22.PNG




Передаточное соединение "GearJoint"

Физика7.PNG

Для передаточного соединения необходимо чтобы два тела имели болтовое или призматическое соединение с статичным телом (или с землёй). Подобно коэффициенту ratio в талевом соединении, передаточное соединение имеет коэффициент передачи. Однако в данном случае коэффициент передачи может быть отрицательным. Также следует помнить, что, если одно соединение болтовое (вращение), а другое призматическое (перемещение), то коэффициент передачи будет иметь размерность длины или единицы делённой на размерность длины.

Джоинт27.PNGДжоинт28.PNG

  • Revolute joint - болтовое соединение которое входит в состав передаточного. Его параметры смотри выше;
  • Prismatic joint - призматическое соединение которое входит в состав передаточного. Его параметры смотри выше;
  • Ratio - коэффициент передачи. (Может быть (+) движутся и вращаются в одном направлении, и (-) движется и вращаются в противоположные стороны относительно друг,друга;

В болтовом и призматическом соединении первым в списке должен обязательно стоять статический объект, а второй динамический.

Джоинт29.PNG

И в машине они должны включатся строго в таком порядке.

Джоинт30.PNG

Джоинт31.PNGДжоинт32.PNG