2015-03-10 3 views
0

Я пытаюсь сделать спрайт пешком до положения мыши. Однако, когда мышь нажата, и спрайт подходит к положению мыши, он не останавливается и продолжает двигаться в том же направлении.Libgdx: Sprite хочет остановить движение;

Вот мой код:

public void render(float delta) { 
 
    Gdx.gl.glClearColor(1,1,1,1); 
 
\t Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT); \t 
 
\t \t 
 
\t if(Gdx.input.isTouched()){ 
 
\t  projected= new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0); 
 
\t  cam.unproject(projected); 
 
\t \t \t 
 
\t  if(position.x != projected.x || position.y != projected.y){ 
 
\t 
 
       pathX = projected.x - position.x; 
 
\t \t pathY = projected.y - position.y; 
 
\t \t \t 
 
\t \t distance = (float) Math.sqrt(pathX * pathX + pathY * pathY); 
 
\t \t directionX = pathX/distance; 
 
\t \t directionY = pathY/distance; 
 
      } 
 
\t } 
 
\t \t 
 
\t position.x += directionX * Speed * delta; 
 
\t position.y += directionY * Speed * delta; 
 
}

Пожалуйста, помогите и спасибо так много.

ответ

1

Это в основном дубликат How to stop drawing a SpriteBatch animation in libgdx? || how do I pause the SpriteAnimation in libGDX with a button to be able to view the current frame when pause button is pressed?, ознакомьтесь с этой статьей, чтобы узнать, помогает ли она.

Короче говоря, вы хотите отслеживать движение игрока, и когда они попадают в координаты x, y вашей мыши, установите для перемещения значение false. Попросите логику в вашем рендере отобразить только тогда, когда ваше логическое значение истинно.

+0

спасибо, я постараюсь сделать то, что вы говорите: D –

+0

Я не вижу весь ваш код, но я предполагаю, что у вас есть слушатель, когда нажимается мышь. В этот момент я бы захватил x, y и установил их в переменные класса, чтобы у вас был доступ к нему за пределами метода рендеринга, но вы можете повторно использовать их там, где вы создаете свой Vector3 – Joe

+1

спасибо вам, что он отлично работает сейчас, спасибо вам ^^ –

Смежные вопросы