Java 直线振动的雪碧
我的问题是,当我直接向上或直接侧向移动雪碧时,雪碧会振动。我试过一些东西,但修不好。这是我目前的代码。该框架是libGDX。我已经尝试过将精灵精确地移动到鼠标上,如果它在1像素范围内,以及其他一些东西,但是没有任何东西对我有效。为什么精灵在直线上振动?我如何才能阻止它?谢谢Java 直线振动的雪碧,java,libgdx,sprite,Java,Libgdx,Sprite,我的问题是,当我直接向上或直接侧向移动雪碧时,雪碧会振动。我试过一些东西,但修不好。这是我目前的代码。该框架是libGDX。我已经尝试过将精灵精确地移动到鼠标上,如果它在1像素范围内,以及其他一些东西,但是没有任何东西对我有效。为什么精灵在直线上振动?我如何才能阻止它?谢谢 float speed = 4; // the speed of the sprite Vector3 mousePosition = new Vector3(); if (Gdx.input.isTouched())
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);
浮动速度=4;//精灵的速度
Vector3鼠标位置=新Vector3();
if(Gdx.input.isTouched())
{
取消投影(mousePosition.set(Gdx.input.getX(),Gdx.input.getY(),0));
if(mousePosition.x>0&&mousePosition.x0&&mousePosition.yplayer.x+(player.width/3))
{
player.x+=速度;
}
else if(mousePosition.xplayer.y+(player.height/2))
{
player.y+=速度;
}
else if(mousePosition.y
考虑将播放器垂直向上移动的情况。在这种情况下,mousePosition.x
保持不变,mousePosition.y
增加mousePosition.y
以这样一种方式增加,即player.y
永远不会超过它,因此精灵沿着y方向的mousePosition移动。但是请记住,mousePosition.x
保持不变。因此,根据您的代码player.x
将增加,直到满足条件mousePosition.x>player.x+(player.width/3)
,一旦超过该值,player.x
将开始减少,直到满足mousePosition.x
。这意味着player.x
在增加和减少,导致它在x方向上振动。水平移动时也会发生同样的情况。但在这种情况下,精灵将沿Y方向振动,但如果mousePosition.x和mousePosition.Y不在精灵的x和Y的上方或下方,那么精灵不应该只在其x和Y处绘制吗?我假设您在player.x和player.Y处绘制精灵。由于您正在更改玩家坐标,精灵的位置将相应更改