![]() |
Проектирвание класса персонажа в игре
Доброго времени суток всем.
Понимаю, что всех уже достали подобные вопросы, но я лучше спрошу 1 раз и больше у меня проблем не возникнет, чем накидаю невнятный код и пойму, что решение неверное, потрачу время и, в итоге, все равно задам вопрос. Небольшое вступление закончено. Итак, к проблеме. Написана модель движения аля Diablo | Sacred | Torchlight (управление мышью, Shift останавливает персонажа и т.п. ), то бишь используются функции типа "moveTo", "moveStart", "moveStop", которые принимают произвольные для персонажа координаты. Все бы ничего, и создал бы я класс Character и добавил бы в него все эти функции, НО другие объекты так же двигаются (снаряды, стрелы, противники). Итого, получаем функции, нужные всем дин. объектам. Итак, вопрос: как лучше спроектировать классы? Пока я вижу одно решение - выделить общий класс всех "движущихся" объектов игры, например GameDynamicObjects и класс Character будет дочерним от него. Если бы управление было стрелочно-WASD'шным, то я без тени сомнения добавил бы это все в класс Character И не парился, но я парюсь по вышеизложенным причинам, поэтому прошу помощи более опытных людей в этом плане. Спасибо за внимание |
Dalass13, по-моему, вы абсолютно правильно мыслите.
Цитата:
|
Да, я понимаю, что путаница небольшая возникает из-за слова "динамический", спасибо за совет.
Получается, я на правильном пути? |
Dalass13, думаю, что да. Подождите ответов других участников, может подскажут больше :)
Цитата:
|
Да, была такая мысль, но старое доброе дьябловское управление изменять не хочу. А такие WASD'шные "подергивания" и "отклонения от траектории" могут понадобиться, например, для уворота от стрел, когда маршрут уже указан. Одна проблема - при удерживании мыши персонаж двигается за мышью непрерывно и управление в этот момент WASD может просто напросто запутывать игрока в отношении его движения. Палка с двумя концами, как говорится) Юзабилити с одной стороны падает,а с другой стороны, кто - то посчитает это очень нужной фичей. Но это тоже, если я правильно понял
|
Весь общий функционал наследуйте, то, что не наследуется приходиться расширять т.е. экстендить. Слова английские в языке AS3 не просто так используются :)
|
Вообще, можно одни и те же функции использовать и для управления мышью, и для управления клавиатурой.
Я бы ввел отдельно функцию setRotation(angle:Number):void и moveTo(toX:Number, toY:Number, distance:Number = -1):void Во втором опциональный параметр, то есть при щелчке мышью можно передать координаты к которым должен двигаться объект, и расстояние, чтобы он не прошел больше этого расстояния. Но это методы можно использовать и при движении с помощью клавиатуры. Например при нажатии W персонаж начинает двигаться в том направлении, в котором развернут на расстояние, равное текущей скорости. Цитата:
|
Цитата:
Добавлено через 1 минуту Цитата:
Добавлено через 12 минут Цитата:
|
| Часовой пояс GMT +4, время: 17:42. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.