Нужно чтоб объект по умолчанию двигался вверх и вправо, а при достижении края экрана менял своё направление. Такое можно встретить на заставках или ещё где-то )
У меня получилось вот что, но может нужно не так?
public class MyGdxGame implements ApplicationListener {
SpriteBatch batch;
TextureRegion npc;
Vector2 velocity;
float x = 0;
float y = 0;
float width;
float height;
boolean left = false;
boolean right = false;
boolean down = false;
boolean up = false;
@Override
public void create() {
batch = new SpriteBatch();
velocity = new Vector2();
Texture texture = new Texture(Gdx.files.internal("npc.png"));
npc = new TextureRegion(texture);
width = npc.getRegionWidth() / 2;
height = npc.getRegionHeight() / 2;
}
@Override
public void render() {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
velocity.x = 100 * Gdx.graphics.getDeltaTime();
velocity.y = 100 * Gdx.graphics.getDeltaTime();
right = !left || x - width < 0;
left = !right || x + width > Gdx.graphics.getWidth();
up = !down || y - height < 0;
down = !up || y + height > Gdx.graphics.getHeight();
if (left) velocity.x = -velocity.x;
if (down) velocity.y = -velocity.y;
x += velocity.x;
y += velocity.y;
batch.begin();
batch.draw(npc, x, y, width, height);
batch.end();
}
}