Подтвердить что ты не робот

Когда использовать актеров в libgdx? Каковы минусы и плюсы?

Я пишу простой симулятор солнечной системы. Это мой первый проект libgdx. Я использую Stage и Actors для главного меню и довольно удобен, особенно при обработке событий касания. Но... глядя на примеры, я вижу, что никто не использует актеров в реальной логике игры. Я блуждаю, если я должен использовать актера в качестве родителя класса планеты или просто написать свой собственный класс. Планеты не будут осязаемыми, и они будут перемещаться только между кадрами, поэтому третьим параметром действия MoveBy должно быть время между кадрами. Это минусы. Каковы преимущества использования Актеров?

4b9b3361

Ответ 1

Основными профессионалами для Актеров являются Действия, Хит-тестирование и сенсорные события, а также Группы Актеров.

Действия делают быструю и легкую анимацию, если это требует логика игры.

Вы можете вызвать stage.hit(x, y) в любое время, чтобы вернуть первого актера, который возвращает true для любой логики хита, которую вы написали для нее (обычно проверяя границы с помощью x, y, width, height). вернуть этого актера или нуль, чтобы продолжать повторять действия хитов актеров, ищущих хит-актера. Null возвращается, если актер не попал.

Хит используется для событий касания сцены. Способы касания актера передаются локальными координатами, а Stage обрабатывает перекрытие объектов, например. если актер закрывает другого актера таким образом, что другой актер не должен получать touchDown, верните истину на актера покрытия, чтобы остановить призыв touchDown на актеров "ниже". Это также устанавливает "фокус" на актера, который возвращает true, чтобы вызывался Actor touchUp.

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

Некоторые минусы: Для актеров требуется этап, который несколько ограничивает функциональность. Многие кодеры используют другую логику для определения состояния игрового объекта, а не действия scene2d (например, box2d). Если вы используете Актеры для игровых объектов, вам, вероятно, понадобятся две ступени, одна для ui и одна для игрового мира. Если вы их не используете, вы, вероятно, будете использовать свой собственный SpriteBatch и Camera. И имейте в виду, что у Актеров есть только абстрактный метод Draw, так что вам все равно придется создавать логику рисования в любом случае. Вероятно, вы сохраните TextureRegion или Sprite в качестве частного поля для Актера. Если вы хотите использовать собственную логику обновления, вы можете переопределить метод act (float delta), чтобы получить дельта-время (вызов super.act(delta), если вы используете Actions).

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