Я просмотрел некоторые учебники по libgdx и научился использовать камеру и использовать плитку для создания карты. Однако я встречаю небольшую проблему, требующую некоторых идей. Я хочу сделать игру RPG, но хочу, чтобы игра запоминала информацию каждого монстра, такую как местоположение. Однако карта очень большая, поэтому мне нужно уменьшить объем рендеринга. Как я могу хранить информацию о каждом монстре, в том числе вне камеры, не используя много ресурсов?libgdx - управляющие объекты вне камеры
ответ
Я полагаю из вашего вопроса, что вы уже работали с TiledMap
s в libGDX. Вы можете использовать OrthogonalTiledMapRenderer
рисовать карту, которая будет оказывать правильную часть экрана для Вас, используя Camera
объект, который вы передаете ему:
OrthogonalTiledMapRenderer renderer =
new OrthogonalTiledMapRenderer(myMap, 1/16f); // Change this to your render scale
//e.g. 1/32f means your tiles are 32px wide
OrthographicCamera camera = new OrthographicCamera(16, 9); //viewport size: 16x9
...
//Inside your class that implements Screen or extends Game
public void render(float delta) {
...
renderer.setView(camera);
renderer.render();
...
}
для управления объектами, посмотри на the Ashley framework. Вы можете дать всем вашим объектам Component
, содержащим его позицию, а затем создать систему рендеринга для их рисования.
Вам придется рисовать свои объекты самостоятельно, так как они не являются частью TiledMap, но для начала эта реализация system using Box2dDebugRenderer
может помочь.
Если вы не с помощью Box2D, вот пример того, как это могло бы выглядеть используя EntitySystem
(не проверено):
public class RenderingSystem extends IteratingSystem {
public static final Family MONSTERS = Family.all(BoxComponent.class).get();
//Assumes you've made a BoxComponent class
private ShapeRenderer shapes;
private Camera camera;
public RenderingSystem(Camera camera) {
super(MONSTERS);
this.camera = camera;
this.shapes = new ShapeRenderer();
}
@Override
public void update(float deltaTime) {
shapes.begin(ShapeType.Line);
shapes.setColor(Color.RED);
super.update(deltaTime);
shapes.end();
}
@Override
protected void processEntity(Entity entity, float deltaTime) {
Rectangle box = entity.getComponent(BoxComponent.class);
//^Could be done faster using ComponentMappers
shapes.rect(box.x, box.y, box.width, box.height);
}
}
благодарю вас за информацию, но я не знаю, как использовать рамки ashley ... Я очень новичок в программировании. Как я могу реализовать библиотеку для своего проекта? – sunmaggot
Вы используете Gradle для создания своих проектов? Если да, вы можете просто добавить эти строки [здесь] (https://github.com/libgdx/ashley/wiki/Getting-started-with-Ashley#gradle) в свои файлы градиента и перестроить. Если нет, libGDX использует Gradle, поэтому вы можете импортировать его в свою среду IDE (Eclipse/IntelliJ), используя [this] (https://github.com/libgdx/libgdx/wiki/Gradle-and-Eclipse), если вы используете Eclipse или [this] (https://github.com/libgdx/libgdx/wiki/Gradle-and-Intellij-IDEA), если вы используете IntelliJ. Существует также раздел NetBeans [здесь] (https://github.com/libgdx/libgdx/wiki/Gradle-and-NetBeans). – Moira
, конечно, если вы не хотите иметь дело с Gradle, теперь вы можете просто сгенерировать свой проект, [выбрать Ashley] (http://i.imgur.com/BjUgEmn.png) и скопировать весь свой старый код но я очень рекомендую научиться использовать Gradle, поскольку он очень полезен и делает все проще :) – Moira
- 1. C++ - управляющие объекты в векторе
- 2. Вид камеры в libgdx
- 3. Остановка перемещение камеры (LIBGDX)
- 4. Многочисленные камеры LibGDX
- 5. Libgdx: Перевод камеры Scene2d
- 6. Автоматическая прокрутка камеры Libgdx
- 7. позиционирование камеры в LIBGDX
- 8. Libgdx: Объекты, создающие другие объекты
- 9. полупрозрачные объекты в libgdx
- 10. LibGDX - мерцание при настройке камеры
- 11. камеры в libgdx и box2d
- 12. Установить поворот камеры в Libgdx
- 13. Libgdx: Перемещение поворотной камеры перспективы
- 14. libGdx как вернуть вращение камеры
- 15. Отключение Java libGDX от камеры
- 16. LibGDX: Перемещение камеры с Touch
- 17. Libgdx Позиция камеры в TiledMap
- 18. Libgdx Orthographic камеры Исходное положение
- 19. libgdx партия вытягивает вне FitViewport
- 20. LibGdx - Место Актер вне сцены
- 21. Положение окна libgdx вне стадии
- 22. Libgdx Координаты после поворота вокруг камеры
- 23. libGDX: Перемещение камеры в окне просмотра сцены
- 24. Камеры Libgdx/Java для нескольких игроков?
- 25. Проблема с увеличением камеры с помощью libGDX
- 26. libGDX орфографической размер вид камеры (с Box2D)
- 27. LibGDX - Перевод и ротация орфографической камеры
- 28. libGDX Перемещение орфографической камеры вниз по текстуре
- 29. Позиция камеры libgdx с использованием окна просмотра
- 30. Перемещение камеры без запаздывания в libgdx
Для вас большая карта, ваш нужно будет использовать метод называется вырезку , Что касается хранения информации, создайте объект Java с необходимой информацией, такой как позиция, texturereregions и ect. –