Я пытаюсь внедрить сенсорную прокрутку в игру libgdx. У меня широкий образ, который является панорамой комнаты. Я хочу иметь возможность прокручивать изображение, чтобы пользователь мог видеть его по комнате. У меня есть так, что я могу прокручивать определенное расстояние, но когда регистрируется новое событие touchDragged, изображение возвращается в исходное положение.touch scrolling with libgdx
Это, как я его реализация
public class AttackGame implements ApplicationListener {
AttackInputProcessor inputProcessor;
Texture backgroundTexture;
TextureRegion region;
OrthographicCamera cam;
SpriteBatch batch;
float width;
float height;
float posX;
float posY;
@Override
public void create() {
posX = 0;
posY = 0;
width = Gdx.graphics.getWidth();
height = Gdx.graphics.getHeight();
backgroundTexture = new Texture("data/pancellar.jpg");
region = new TextureRegion(backgroundTexture, 0, 0, width, height);
batch = new SpriteBatch();
}
@Override
public void resize(int width, int height) {
cam = new OrthographicCamera();
cam.setToOrtho(false, width, height);
cam.translate(width/2, height/2, 0);
inputProcessor = new AttackInputProcessor(width, height, cam);
Gdx.input.setInputProcessor(inputProcessor);
}
@Override
public void render() {
Gdx.gl.glClearColor(0,0,0,1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
batch.setProjectionMatrix(cam.combined);
batch.begin();
batch.draw(backgroundTexture, 0, 0, 2400, 460);
batch.end();
}
@Override
public void pause() {
// TODO Auto-generated method stub
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
@Override
public void dispose() {
backgroundTexture.dispose();
}
}
И в InputProcessor
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
cam.position.set(screenX, posY/2, 0);
cam.update();
return false;
}
Я получил это далеко с помощью этого вопроса LibGdx How to Scroll using OrthographicCamera?. Однако это действительно не решает мою проблему.
Я думаю, что проблема заключается в том, что touchDragged corodinates не является мировыми координатами, но я попытался непроектировать камеру без эффекта.
Я боролся с этим в течение нескольких недель, и я был бы очень признателен за помощь в этом.
Заранее спасибо.
Похоже, это может быть ответ, не могли бы вы включить вашу реализацию cameraOutOfLimit, поскольку это та часть, с которой у меня возникают проблемы. Я пробовал Scrollpane, и это работает, но я могу добавить нового актера на сцену и прокрутить его вместе с фоном. – jonnypotwash
Я добавляю функцию cameraOutOfLimit. Надеюсь, это будет полезно. – drinor
Это работало очень хорошо в сочетании с жестомListener, предложенным P.T. ниже. – jonnypotwash