Я не знаю, что не так с этим кодом. Спрайт должен двигаться влево, когда он достигает правого конечного угла. но этот код делает, когда он (спрайт) достигает правого конечного угла, спрайт просто останавливается.

StartM - левый конечный угол, а endM - правый конечный угол

 //in constructor
 position = new Vector2(ShootingTreys.WIDTH*0.48f, ShootingTreys.HEIGHT*0.025f);

  // in update
 delta = Gdx.graphics.getDeltaTime();
 if(ps.touch == false){

        if(leftEnd == false && (startM <= ballMeter.getX()) ){
            position.x = ballMeter.getX();
            position.x += 20 *delta;

            if(endM == ballMeter.getX()){
                leftEnd =true;
            }
        }
        else {
            position.x = ballMeter.getX();
            position.x -= 20 *delta;

            if(startM == ballMeter.getX()){
                leftEnd = false;
            }
        }

        ballMeter.setPosition(position.x , ballMeter.getY() );
0
Paul Natividad 28 Фев 2017 в 18:41

2 ответа

Лучший ответ

Сделайте небольшие изменения в вашем коде.

if(endM == ballMeter.getX()){
       leftEnd =true;
}

Перевести в

if(endM <= ballMeter.getX()){
       leftEnd =true;
}

А также

if(startM == ballMeter.getX()){
   leftEnd = false;
}

К

if(startM >= ballMeter.getX()){
       leftEnd = false;
}
1
Aryan 28 Фев 2017 в 18:01

Спасибо @AbhishekAryan

        if(leftEnd == false || (startM <= ballMeter.getX()) ) {
            position.x = ballMeter.getX();
            position.x += 20 * delta;

            if(endM <= ballMeter.getX()){
                leftEnd =true;
            }
        }
        if(leftEnd) {
                position.x = ballMeter.getX();
                position.x -= 20 * delta;

            if(startM >= ballMeter.getX()){
                leftEnd = false;
            }
            }

        ballMeter.setPosition(position.x , ballMeter.getY() );
0
Paul Natividad 1 Мар 2017 в 02:17