Libgdx scene2d для 3D игры с 2D логикой?


Я начал 2D игру сверху вниз с libgdx scene2d, и мне нравится, как она реализована, ее логика и как программисты могут ее использовать (например, stage.act() вызывает actor.act(delta) для каждого зарегистрированного Actor). Теперь я thoguht об использовании этой логики для 3D-игры. Я знаю, что scene2d в основном создан для пользовательского интерфейса, а не для игр вообще, особенно для 3D. но моя логика 3D игр была бы похожа на 2D сверху вниз. Позвольте мне объяснить: вы, игрок, находитесь в лабиринте. Вы можете только сталкиваться со стенами, которые одинаковы на каждый рост. Таким образом, обнаружение столкновения будет таким же, как и в 2D сверху вниз. Также вы не можете прыгать, только идти вперед, назад... так что и движение будет таким же, как 2D сверху вниз. Только вид, поэтому рисунок, будет от первого лица, поэтому 3D. было бы плохо злоупотреблять scene2d только для логики и использовать Model и так далее для 3D-чертежа? Я просто думал использовать scene2d, поэтому мне не нужно писать свои собственные методы "все зарегистрированные объекты действуют сейчас". Что вы об этом думаете?

1 2

1 ответ:

Вы можете использовать scene2d в этом случае, если вы хотите поймать входные события на ваших актерах, например щелчки мыши.

Это фактически одно из основных применений scene2d (и почему он используется в основном для пользовательского интерфейса). Еще одна причина-способность группировать актеров, но я думаю, что вам это не понадобится.

Если вы не хотите ловить входные события на ваших игровых объектах, то вам не следует использовать scene2d.

Имитировать то, что делает scene2d Stage, так же просто, как поддерживать List<Entity> и вызывать entity.update(delta) (эквивалент стадии.act ()) и entity.render(delta) (эквивалент stage.draw ()) для каждого объекта в списке.