box2d + cocos2d: почему происходит задержка при манипулировании объектами в блоке 2d с помощью mouseJoint - PullRequest
1 голос
/ 16 февраля 2011

Когда я перетаскиваю объект в моей игре, объект никогда не оказывается прямо под пальцем. Там нас это отставание / задержка, от которой я не могу избавиться. Это следует за моим пальцем вместо того, чтобы быть непосредственно под ним. Вы можете попробовать в тестовом стенде, а также. Очень быстрое перемещение объекта, и объект никогда не оказывается под мышью / пальцем

Это слабость в box2d? Или я что-то упускаю очевидное?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 16 февраля 2011

Это потому, что mouseJoint похоже на distantJoint (весна). Существует параметр maxForce, который можно указать, чтобы минимизировать задержку - сделать пружину более жесткой.

EDIT:

Также вы можете переместить ваш объект, указав его положение прямо на вашем пальце. Но если этот объект столкнется с чем-то, это обеспечит нефизическое поведение, потому что скорость тела будет равна нулю.

Таким образом, чтобы правильно перемещать его (если будут столкновения), вы должны указать его скорость или ускорение (как это делает сустав мыши). Но для оценки скорости вашего пальца вам понадобится время и задержка останется.

0 голосов
/ 16 февраля 2011

Большая часть этого связана с задержкой в ​​оборудовании. Если ваш тайминг полностью совершенен, он будет отставать от 16 мс, вызванных графическим процессором iPhone, ~ 20 мс от сенсорного экрана, а затем сколько времени займет обработка вашей сцены. Таким образом, те составляют в целом между 36-70 мс лага. Кроме того, в box2d для сустава мыши применяется небольшое демпфирование для стабильности физического моделирования.

...