Перемещение тела в определенную точку [Box2D, Libgdx]

Я пытаюсь сделать простой эффект магнита, когда мой персонаж находится рядом с монетой, он должен переместиться на свою позицию

У меня есть это:

if(Mycharacter.position.x +2  >= position.x)    //position = coin position
                {

            body.setTransform(Mycharacter.position.x, Mycharacter.position.y, 0);
                 }

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

Я все еще очень плохо знаком с Box2d и Libgdx, так что, если возможно, держите это очень просто, ребята, это не поможет мне ужасно разбираться в физике. Заранее спасибо.

2 ответа

Решение

Я нашел ответ:

if("Any condition")
{
  body.setLinearVelocity((Character.position.x - position.x) * Velocity, (Character.position.y - position.y)* Velocity);
}

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

Вы можете сделать это:

1. Compute vector from you to coin (vx = coin.x - player.x, same for y)
2. Compute the vectors's distance (using MathUtils.sqrt(vx*vx+vy*vy))
3. If distance is shorter than magnet range, then reduce the distace.
4. recompute new vector from player to coin (vx *= (newDistance/oldDistance))
5. update coin'S position
Другие вопросы по тегам