我的问题是当我直接向上或直接向侧面移动精灵振动时。我尝试了一些东西,但不能解决它。这是我目前的代码。该框架是libGDX。我已经尝试将精灵精确地移动到鼠标,如果它在1像素范围内和其他东西,但没有任何东西适合我。为什么精灵在直线上振动,我怎么能阻止它呢?谢谢!
float speed = 4; // the speed of the sprite
Vector3 mousePosition = new Vector3();
if (Gdx.input.isTouched())
{
camera.unproject(mousePosition.set(Gdx.input.getX(), Gdx.input.getY(), 0));
if(mousePosition.x > 0 && mousePosition.x < Screen.WIDTH )
{
if(mousePosition.y > 0 && mousePosition.y < Screen.HEIGHT)
{
if(mousePosition.x > player.x + (player.width /3))
{
player.x+=speed;
}
else if(mousePosition.x < player.x + (player.width /3))
{
player.x -=speed;
}
if(mousePosition.y > player.y + (player.height /2))
{
player.y+=speed;
}
else if(mousePosition.y < player.y + (player.height /2))
{
player.y-=speed;
}
}
}
}
batch.draw(player.sprite, player.x, player.y);
答案 0 :(得分:0)
考虑你垂直向上移动玩家的情况。在这种情况下,mousePosition.x
保持不变,mousePosition.y
增加。 mousePosition.y
以player.y
永远不会超过它的方式增加mousePosition.x
,因此精灵在Y方向上跟随mousePosition。但请记住player.x
保持不变。因此,根据您的代码mousePosition.x > player.x + (player.width /3)
会增加,直到满足条件player.x
,一旦超过该值,mousePosition.x < player.x + (player.width /3)
将开始减少,直到满足player.x
。这意味着{{1}}正在增加和减少,导致它在X方向上振动。水平移动时会出现相同的情况。但在这种情况下,精灵会向Y方向振动