Я новичок в libgdx, я пытаюсь сделать спрайт, когда камера следует. Я могу заставить спрайт двигаться идеально, пока я не присоединяю камеру к нему. Когда я нажимаю, спрайт будет двигаться, где бы он ни казался (кажется), и камера будет следовать должным образом. Я пробовал несколько разных вещей, но на данный момент это просто догадки и проверки.Sprite не двигается должным образом. libgdx
public class MyGdxGame implements ApplicationListener {
OrthographicCamera mCamera;
SpriteBatch mBatch;
Texture mTexture, mMap;
Sprite sprite;
float touchX, touchY;
float spriteX, spriteY, speed = 5;
@Override
public void create() {
float CAMERA_WIDTH = 480, CAMERA_HEIGHT = 320;
mBatch = new SpriteBatch();
mTexture = new Texture(Gdx.files.internal("data/logo.png"));
mMap = new Texture(Gdx.files.internal("data/sc_map.png"));
mCamera = new OrthographicCamera(CAMERA_WIDTH, CAMERA_HEIGHT);
mCamera.setToOrtho(false, CAMERA_WIDTH, CAMERA_HEIGHT);
}
@Override
public void dispose() {
}
@Override
public void render() {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
mBatch.setProjectionMatrix(mCamera.combined);
mCamera.update();
mBatch.begin();
updateInput();
drawD();
mBatch.end();
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
public void drawD() {
mCamera.position.set(spriteX, spriteY, 0);
mBatch.draw(mMap, 0, 0);
mBatch.draw(mTexture, spriteX, spriteY);
}
public void updateInput() {
if (Gdx.input.justTouched()) {
touchX = Gdx.input.getX();
touchY = Gdx.input.getY();
}
if (touchX != spriteX) {
if (spriteX < touchX) {
spriteX += speed;
}
if (spriteX > touchX) {
spriteX -= speed;
}
}
if (touchY != spriteY) {
if (spriteY > Gdx.graphics.getHeight() - touchY) {
spriteY -= 10;
}
if (spriteY < Gdx.graphics.getHeight() - touchY) {
spriteY += 10;
}
}
}
}
Можете ли вы описать более подробно, что вы имеете в виду под «Я пытаюсь сделать спрайт двигаться, пока камера следует "? – Jyro117
Когда пользователь нажимает/касается, я хочу получить координаты x и y и переместить спрайт туда. Камера должна двигаться вместе с ней, поэтому спрайт всегда будет находиться в центре камеры. Похоже на такие игры, как Diablo. – user2180581
Я отправлю реальный ответ, когда у меня появится шанс (если кто-то меня не избивает). Один из способов сделать то, что вы хотите, - это нарисовать персонажа в центре экрана, зафиксировать камеру, а затем переместить карту/врагов/объектов/и т. Д. В противоположном направлении вместо перемещения символа. Это создает иллюзию движения персонажа, но удерживает их в центре экрана. – Jyro117