雪碧在直线上振动

时间:2014-06-03 17:28:54

标签: java libgdx sprite

我的问题是当我直接向上或直接向侧面移动精灵振动时。我尝试了一些东西,但不能解决它。这是我目前的代码。该框架是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);

1 个答案:

答案 0 :(得分:0)

考虑你垂直向上移动玩家的情况。在这种情况下,mousePosition.x保持不变,mousePosition.y增加。 mousePosition.yplayer.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方向振动