将身体移动到特定点[Box2D,Libgdx]

时间:2014-07-16 17:41:31

标签: java libgdx box2d

当我的角色靠近硬币时,我正试图制作一个简单的磁铁效果,这应该移动到他的位置

我有这个:

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

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

这接近我想要的但我需要能够看到硬币移动到我的角色。

我仍然是Box2d和Libgdx的新手,所以如果可能的话,保持它非常简单的家伙,它对我在物理学上很糟糕没有帮助。提前谢谢。

2 个答案:

答案 0 :(得分:2)

我找到了答案:

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

提醒这是实现我想要的最简单方法。我确信有更合适的方法可以做到。

答案 1 :(得分:0)

你可以这样做:

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