Горизонтальное движение траектории запуска - PullRequest
1 голос
/ 13 января 2012

Я как бы застрял здесь со своими мыслями ... У меня есть картина того, чего я хочу достичь. Я думаю, что это лучший способ объяснить.

enter image description here

Красные точки - стартовые позиции. Я хочу, чтобы все они наносили удары по одним и тем же точкам на земле, а с самого начала двигались в параболе. К сожалению, я не настолько хорош в математике, чтобы заставить это работать Важно, чтобы пути всегда оставались одинаковыми. Я не знаю, смогу ли я сделать это с помощью простой физики (гравитации) Box2D, может быть. Спасибо за любой совет!

РЕДАКТИРОВАТЬ: я, возможно, думал, что это может быть достигнуто, давая объектам ту же скорость у, но разные скорости х. Но это было бы довольно жестко запрограммировано ... пока ищем практические ответы: /


Я пробовал некоторые математические формулы, но я не могу заставить это работать так, как я хочу: /.

Используются те:

x = v t cos (альфа) y = (v t sin (alpha)) - (0,5 * g * t ^ 2)

1 Ответ

0 голосов
/ 16 января 2012

Я не знаю, разрешено ли мне отвечать на мой собственный вопрос ..

Я просто хочу сообщить вам решение, которое я использую сейчас.Это не оптимально, но я думаю, это работает:

Я реализовал Time.class, чтобы сохранить мой deltaTime.В моем классе Enemy я получил это для движения:

    distance = 100;
    vY = targetTime*gravity*0.5f;
    vX = distance / targetTime;

и в методе обновления:

      x += vX * Time.deltaTime;
      y -= vY * Time.deltaTime;

      vY -= gravity;
      if(y >= 280)
        vY = -vY;

Так что после удара о землю я просто поворачиваю y-скорость вокруг.Это особенно работает в моем случае, потому что гравитация возвращается через некоторое время и возвращает противника на землю.Это все еще трудно закодировано, но я не знаю лучше, чем сделать это.

...