Как придать кинематическому телу Box2d предопределенный криволинейный путь

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

Я пишу игру для iPhone — чего сейчас нет — и использую Cocos2d и Box2D. У меня есть объекты, которые перемещаются в игре, и я хотел бы придать им более изогнутый путь. Из моих исследований я знаю, что я должен использовать тело типа b2_kinematicBody, которое позволяет мне изменять линейную скорость каждый тик и не дает им столкнуться с другими моими летающими телами. Я понимаю, что если я знаю свою текущую позицию (x, y) и мою следующую позицию на шаге (x1, y1), я смогу вычислить вектор скорости. У кого-нибудь есть хороший способ дать объекту определенный изогнутый путь? Я думаю, это должно быть какое-то параметрическое уравнение.


person Aaron    schedule 07.10.2011    source источник


Ответы (2)


Посмотрите на кривые Безье. После определения кривой вы можете вычислить производную (это легко для Безье) и использовать ее как скорость для вашего тела.

person Andrew    schedule 07.10.2011
comment
Если ближе, то первая производная кривой Безье отлично работает! Большое спасибо! - person Aaron; 27.10.2011
comment
Просто чтобы убедиться, что я иду по правильному пути, чтобы получить постоянную скорость, когда тело движется по кривой, я делаю следующее. После нахождения вектора скорости я нормализую, что дает мне постоянную скорость, а затем умножаю ее на какой-то коэффициент, если я хочу, чтобы она двигалась быстрее по кривой. Кажется ли это правильным для такого рода симуляции. - person Aaron; 27.10.2011
comment
@ Аарон: Нет, это не так. Я не знаю простого способа двигаться с постоянной скоростью по Безье. Предлагаю программно разбить кривую на линии (больше линий - плавнее движение). Легко контролировать скорость при движении по линии - person Andrew; 27.10.2011

О, как игра называется? звучит как хороший. вы смотрели, может быть, просто делаете это в версии 2.0

person Deprecated Darren    schedule 07.10.2011
comment
Мне бы очень хотелось иметь возможность указать изогнутый путь, а не просто линию. Это увеличит сложность на порядок. - person Aaron; 07.10.2011