2013-04-19 2 views
1

Как я могу заставить тело box2d двигаться в режиме синусоидального типа? Я считаю, что это потребует применения некоторых сил для перемещения по пути кривой синуса, но я не знаю, как это сделать. Я бы очень признателен за любые рекомендации, чтобы сделать это возможным.Создание корпуса box2d в движении с синусоидальным движением

+1

Вы можете применить свойство силы синуса к силе тела, чтобы оно колебалось между 1 и -1 – LearnCocos2D

+0

@ LearnCocos2D: Я был бы очень признателен за код этого – oopology

+0

Я не знаю box2d, поэтому я сделаю это замечанием. Вы знаете, как применить силу к телу? Вы знаете, как генерировать синусоидальную волну (т. Е. «Sin (t)» для t = 0,01, 0,02, 0,03 ...)? Интересным свойством синусоидальных волн является то, что синусоидальная сила * производит синусоидальное * движение * (в отличие, скажем, от квадратной волны). – Beta

ответ

0

Я не пробовал, но решение для мыши, представленное в Making a Box2d object follow a predetermined path, кажется элегантным и должно работать.

У вас может быть небольшая задержка на ходу, но она будет казаться более «естественной».

Если вам нужен точный ход, посмотрите: making a box2d body move along a Bezier curve/ arc path, но физика может быть «повреждена».

0

Я предполагаю, что ваш являются числовая физика, имитируя: v = v + a * dt, x = x + v * dt с dt фиксированным шагом времени и a построенного по сумме сил, деленная на его массу (F = т * а). В этом случае существует несколько способов достижения синусоидального движения. Вы можете применить синусоидальную силу, поскольку синусоидальная функция обладает тем свойством, что она будет только сдвигать фазу, когда вы ее интегрируете/дифференцируете. Или вы можете моделировать simple harmonic motion как система с пружинными пружинами, в которой сила пропорциональна отрицательному расстоянию от объекта до определенной точки.

Смежные вопросы