Я пишу простой симулятор солнечной системы. Это мой первый проект libgdx. Я использую Stage и Actors для главного меню, и это очень удобно, особенно при обработке сенсорных событий. Но... глядя на примеры, я вижу, что никто не использует актеров в реальной игровой логике. Я сомневаюсь, следует ли мне использовать актера в качестве родителя класса планеты или просто написать свой собственный класс для этого. Планеты нельзя будет трогать, и они будут перемещаться только между кадрами, поэтому третьим параметром действия MoveBy должно быть время между кадрами. Это минусы. Каковы плюсы использования Актеров?
Когда использовать актеров в libgdx? Какие минусы и плюсы?
Ответы (1)
Основными плюсами для Актеров являются Действия, Проверка попаданий и сенсорные события, а также Группы Актеров.
Действия делают быструю и легкую анимацию, если это необходимо вашей игровой логике.
Вы можете вызвать stage.hit(x, y) в любое время, чтобы вернуть первого актора, который возвращает true для любой логики попадания, которую вы написали для него (обычно проверяя границы с помощью x, y, ширины, высоты). верните этого актера или ноль, чтобы продолжить итерацию по методам попадания актеров в поисках актера попадания. Null возвращается, если ни один актер не был поражен.
Hit используется для событий касания сцены. Методам касания актера передаются локальные координаты, а сцена обрабатывает наложение объектов, например. если актер покрывает другого актера так, что другой актер не должен получать touchDown, верните true для покрывающего актера, чтобы остановить вызов touchDown для актеров «ниже». Это также устанавливает «фокус» на актере, который возвращает true, так что будет вызван TouchUp актера.
Вы можете сгруппировать актеров вместе, чтобы выполнять действия, сенсорные события и т. д. для всей группы актеров как единое целое.
Некоторые минусы: актерам требуется сцена, которая несколько ограничивает функциональность. Многие кодеры используют другую логику для определения состояния игрового объекта, а не действия scene2d (например, box2d). Если вы используете Актеры для игровых объектов, вам, вероятно, понадобятся два этапа: один для пользовательского интерфейса и один для игрового мира. Если вы их не используете, вы, вероятно, все равно будете использовать свои собственные SpriteBatch и Camera. И имейте в виду, что у Актеров есть только абстрактный метод Draw, поэтому вам все равно придется создавать логику рисования. Вы, вероятно, сохраните TextureRegion или Sprite в качестве частного поля для Актера. Если вы хотите использовать собственную логику обновления, вы можете переопределить метод act(float delta), чтобы получить время разности (вызовите super.act(delta), если вы используете действия).
Поэтому, если у вас есть собственная логика и вы не будете использовать многое из того, что может предложить Stage, сэкономьте ресурсы и разверните свое собственное решение для конкретного приложения. Если вы можете использовать некоторые плюсы, не ограничивая необходимую функциональность, перейдите на второй этап для игровой логики.
Action
несколько бессмысленны, поскольку движение идет только от физики к Актеру, а не наоборот. Тем не менее, вы по-прежнему получаете обработку ввода, систему событий, обработку камеры и сопоставление координат бесплатно. Действия по-прежнему можно использовать для визуальных элементов без физического тела (например, экипированных предметов, спрайтов эффектов и т. д.).
- person Matthias; 22.08.2015