Я пытаюсь отобразить некоторые объекты в случайных местах на экране. Позиции появления в порядке, однако, когда я перемещаю объект игрока (на котором сфокусирована камера) и прохожу середину экрана (затем камера начинает двигаться), спрайты других объектов также перемещаются вместе со мной, чего я не хочу. .
Я пытался дать им позиции в мире, а не на экране, используя cam.unproject(position);, который преобразует позиции относительно экрана в позиции относительно игрового мира, но это тоже не сработало.
Они отображаются так же, как и все остальные спрайты в libgdx.
Это код, в котором я инициализирую объекты:
Texture zombie = new Texture("zombie.png");
float x, y;
for (int i = 0; i < enemy_amout; i++) {
x = rm.nextFloat() * (mapWidth * 8f- zombie.getWidth());
y = rm.nextFloat() * (mapHeight * 8f - zombie.getHeight());
Vector3 position = new Vector3(x, y, 0);
cam.unproject(position);
enemies[i] = new Entity(zombie, position.x, position.y, 1);
}
Вот как выглядит игра, когда я ее запускаю

И вот как это выглядит после того, как я переместил персонажа игрока вправо. Как видите, они двигались рядом с камерой, но я хочу, чтобы они оставались на своих исходных позициях.

batch.begin (); player.draw (партия); для (Entity e: враги) e.draw (партия); batch.end (); Как я уже сказал, обычный рендеринг спрайтов
Вы используете одну камеру для всего и применяете ее матрицу к партии?
Я использовал одну камеру, но не наносил ее матрицу на серию. Добавление batch.setProjectionMatrix (cam.combined); исправил мою проблему, поэтому спасибо, но теперь все мои спрайты огромны без причины.




unprojecting ничего не изменил, я получил тот же результат без этой строки кода