lidbgx перемещает объекты справа налево - PullRequest
0 голосов
/ 08 октября 2019
batch.begin();

    batch.draw(tr_background, 0, 0, 3024, 1443);

    batch.draw(tr_ball, x, 110, 100, 100);

    batch.end();

    x = x + 100 * Gdx.graphics.getDeltaTime();

    if(x > camera.viewportWidth)
        x = -100;

он перемещается слева направо, а затем обратно в исходное положение. Как переместить его справа налево, когда tr_ball достигает с правой стороны?

1 Ответ

0 голосов
/ 08 октября 2019

Создайте переменную скорости мяча для класса

float ballSpeed = 100;

Затем переверните его, когда шарик пройдет конец экрана. Итак, заменяя ваш код после batch.end() выше:

x += ballSpeed * Gdx.graphics.getDeltaTime();

if (x >= camera.viewportWidth - 100) {
    x = camera.viewportWidth; // prevent overshooting
    ballSpeed *= -1;
} else if (x <= 0) {
    x = 0; // prevent overshooting
    ballSpeed *= -1;
}

Этот код предполагает, что ваша камера расположена с 0 на левом краю экрана. Также 100 - это ширина шара. Это действительно должна быть константа (static final float), так как вы будете использовать ее в нескольких местах в вашем коде.

...