Moving Platform object - игра для Android с использованием box2D - PullRequest
2 голосов
/ 10 декабря 2011

Я хотел бы задать следующий вопрос.

У меня есть Android-игра с 2D-прокруткой, использующая And Engine.

И двигатель использует физический двигатель BOX2D.

В моей игре у меня есть объект, называемый «движущаяся платформа», это простая платформа, которая движется в направлении вправо / влево и постоянно меняет направление движения в зависимости от текущей координаты X. Он работает нормально, я перемещаю его с помощью:

    body.setLinearVelocity(-1 * 5, b.getLinearVelocity().y);

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

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

До сих пор я пытался или думал о:

  • в контактном слушателе проверьте, касается ли тело игрока тела платформы, и если да, примените текущую линейную скорость платформы к игроку
  • увеличение трения платформы

Пока безуспешно, буду благодарен за некоторые идеи / советы - спасибо.

1 Ответ

2 голосов
/ 11 декабря 2011

Если коэффициент трения платформы равен единице, игрок не должен иметь относительную скорость относительно его скорости.Так что просто установите 1f в качестве поля трения движущейся платформы FixtureDef.

Если это не сработает, убедитесь, что вы не передали 0 в качестве плотности при создании определения устройства игрока., поскольку кинематическое трение рассчитывается следующим образом: friction=(friction coefficient)*(normal force), тогда тело без массы (плотность = 0) в большинстве случаев (Ваше значение входит в «большинство») будет иметь нет трения.

...