abler98
@abler98
Software Engineer

Как правильно реализовать движение и изменение направления?

Нужно чтоб объект по умолчанию двигался вверх и вправо, а при достижении края экрана менял своё направление. Такое можно встретить на заставках или ещё где-то )

У меня получилось вот что, но может нужно не так?
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();
	}
}
  • Вопрос задан
  • 2668 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы