#camera #libgdx #2d
Вопрос:
Обновить:
Итак, очевидно, что если я перемещу плеер и в то же время скажу камере переместиться на позицию игрока, то они оба переместятся. Итак, теперь я знаю, как перемещать плеер и камеру одновременно. Это достаточно просто. Однако я все еще не могу перемещать плеер и камеру независимо друг от друга, поэтому этот вопрос все еще открыт. Если это не так прямолинейно, как «установить камеру в это положение», то как я должен прокручивать камеру, масштабировать ее впереди или позади проигрывателя и т. Д.?
(P.S. Я думаю, что выбрал не ту область для занятий, лол. Нет ничего более неприятного, чем кодирование!)
вопрос:
Всем привет. Я новичок в StackOverflow, очень новичок в LibGDX и все еще относительно новичок в программировании. Я рано столкнулся с проблемой, которую не могу решить. Это включает в себя попытку переместить камеру в 2D-платформере. Камера вообще не движется. Сначала я опубликую только код, который напрямую относится к камере и рендерингу:
@Override
public void show() {
// initialize player, spriteBatch, map
mapRenderer = new OrthogonalTiledMapRenderer(map, (float) 1 / 16);
camera = new OrthographicCamera();
// camHorizontalTileNum = 30
// camVerticalTileNum = 25
camera.setToOrtho(false, camHorizontalTileNum, camVerticalTileNum);
camera.update();
} // create
@Override
public void render(float delta) {
Gdx.graphics.getGL20().glClear(GL20.GL_COLOR_BUFFER_BIT);
// render before sprite batch
if (Gdx.input.isKeyPressed(Input.Keys.A)) {
camera.position.x -= 100 * Gdx.graphics.getDeltaTime();
} // if
if (Gdx.input.isKeyPressed(Input.Keys.D)) {
camera.position.x = 100 * Gdx.graphics.getDeltaTime();
} // if
if (Gdx.input.isKeyPressed(Input.Keys.W)) {
camera.position.y = 100 * Gdx.graphics.getDeltaTime();
} // if
if (Gdx.input.isKeyPressed(Input.Keys.S)) {
camera.position.y -= 100 * Gdx.graphics.getDeltaTime();
} // if
if (Gdx.input.isKeyPressed(Input.Keys.SPACE)) {
System.out.println("cam X: " camera.position.x);
System.out.println("cam Y: " camera.position.y);
} // if
camera.update();
mapRenderer.setView(camera);
mapRenderer.render();
spriteBatch.setProjectMatrix(camera.combined);
spriteBatch.begin();
player.draw(spriteBatch);
spriteBatch.end();
} // render
Карта и спрайт игрока загружаются правильно. Когда я нажимаю клавишу ПРОБЕЛА, позиции камеры и плеера распечатываются, но положение камеры никогда не меняется, независимо от того, нажимаю ли я другие клавиши. Я также пытался реализовать движение игрока, но позиция игрока также никогда не меняется.
Класс, в котором это находится, расширяет адаптеру экрана. Я реализую show(), render(), hide () и dispose().
Что я здесь делаю не так? Любая помощь очень, очень ценится!
Комментарии:
1. Я не вижу в вашем фрагменте никакой причины для того, чтобы игрок также двигался. Я также предлагаю заменить
Gdx.graphics.getDeltaTime()
на justdelta
.