2017-01-27 22 views
1

Я вращаю свой объект (корабль), чтобы встретить цель с помощью кода ниже.Как получить векторный объект моего объекта в libgdx/box2d?

playerBody.setTransform(playerBody.getPosition(), MathUtils.lerpAngle(playerBody.getAngle(), getDesiredAngle(),lerpProgress));

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

  Vector2 direction = playerBody.getWorldPoint(new Vector2(0,1)); 
     playerBody.setLinearVelocity(direction.nor()); 

ответ

0

Я считаю, что getWorldPoint() не дает вам то, что вы ищете? Он возвращает вектор (направление + расстояние) локальной точки в отношении box2D в мире. На этом рисунке это будет синий вектор: getWorldPoint(). Вам нужен красный вектор.

Самый простой способ сделать бы что-то вроде этого:

float angle = playerBody.getAngle(); 
Vector2 direction = new Vector2(MathUtils.cos(angle),MathUtils.sin(angle)) 

Я должен добавить, что в моем случае, я должен был добавить 90 °, так как мне нужен угол 0 °, чтобы соответствовать вертикальный корпус: angle = playerBody.getAngle() + MathUtils.PI/2f

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

  • Нет связанных вопросов^_^