Я хочу создать 2D-игру, но мне бы хотелось, чтобы персонаж носил тонны разного оборудования в разных комбинациях, например, RPG или что-то в этом роде.
Допустим, пользователь меняет свои плечи и штаны, это должно быть показано игроку, и все это различное оборудование должно следовать за действием различных персонажей (удар, попадание, магия правописания и т. Д.).
Я вижу несколько проблем, которые я хотел бы знать, лучший подход / алгоритм / архитектура для решения.
1 - спрайты или анимация
Должен ли я создавать разные спрайты для каждого оборудования в каждой анимации действия?
Что лучше: просто спрайтовать оборудование и анимировать его непосредственно в коде, например, вращать и переводить (используя что-то вроде tween на Flash)?
Есть ли другой лучший вариант? (Мне действительно не нравятся идеи выше)
2 - Позиции
Допустим, во время одного из движений персонажа он начинает смотреть прямо перед игроком, но заканчивает свое движение, показывая его правую сторону игроку (например, если он размахивает мечом от одной стороны к другой).
Если мы рассмотрим одну часть пользователя, например его голову, она начинается спереди, а затем поворачивает налево.
Это означает как минимум 3 разных положения для каждого головного снаряжения (шлем, кепка, что угодно).
Это, безусловно, влияет на ответ на вопрос № 1. Как лучше всего добиться этого?
3 - Слои
Давайте рассмотрим движение персонажа, когда он вращается на 360 градусов с открытыми руками. В начале анимации его правая рука находится близко к виду пользователя, а затем, в середине движения, это, вероятно, позади тела персонажа на анимации.
Какой бы ни была опция в вопросе № 1, вам, безусловно, нужно использовать какую-то модель слоя, чтобы этот спрайт или анимация начинались ближе к виду игрока, а затем переходили далеко от вида игрока.
Есть ли хороший способ сделать это?
Я знаю, что вопрос довольно длинный и трудный для понимания. Дайте мне знать, если вы считаете, что лучше иметь несколько рисунков, чтобы попытаться объяснить, какой из них, и я постараюсь это сделать.
Ответы:
Я думаю, это звучит так, будто вы ищете систему скелетной анимации 2D? К сожалению, я не знаю ни одной готовой системы для этого, так как она была в основном вытеснена тенденцией 3D-gfx-but-2D-игры.
источник
Как говорит Зорба, большинство ретро-игр не делают этого специально, потому что вам нужно (со спрайтами) иметь многокадровые анимации для каждого отдельного предмета.
Некоторые "ленивые" альтернативы:
источник
В старых играх, таких как серия Ultima, они действительно рисовали один предмет в каждой возможной позе персонажа. С окклюзией можно бороться либо не вытягивая механизм (если левая перчатка находится позади спрайта игрока, вам не нужно об этом беспокоиться), либо просто вытягивая механизм в обратном порядке.
Очевидно, что это было очень трудоемким, и в результате было сравнительно немного образцов уникального снаряжения, с большим количеством версий этого снаряжения с измененной палитрой и измененной палитрой.
В современной игре я настоятельно рекомендую создавать 3d персонажей. Если вы хотите рисовать 2D-изображения или ваша платформа не имеет мощности для реального 3D-изображения, вам все равно лучше будет моделировать все в 3D-режиме, рендеринг, а затем настраивать конечный результат вручную.
В качестве альтернативы, если вы решите, что вам не нужны настройки, у вас нет мощности для полноценной 3d-графики, но вы не хотите поставлять огромную библиотеку спрайтов, вы можете упаковать 3d-модели и отобразить их в текстуру в реальном времени, когда вы знаете, модель вот-вот появится в игре.
источник
Посмотрите книгу Джеймса Да Силвы, где он объясняет, как он сделал «Посудомоечную машину: мертвый самурай». Он покажет вам, как KISS может решить эту проблему. Предложение использовать 3d или 2d скелетную анимацию допустимо и в некотором роде.
источник
Это отличный вопрос, но я думаю, что вы ответили на него сами - вам нужна 2D-система костей, которая поддерживает смену слоев костей, чтобы разные конечности могли двигаться позади и впереди друг друга при вращении персонажа. Вам также нужно будет рисовать свои спрайты с 4 или 8 углов (или сколько вам нужно). В зависимости от того, какие навыки есть в вашей команде, может быть проще создать эти активы в 3D и визуализировать их с нужных вам углов.
Использование 3D-движка также является хорошим решением, хотя это принесет свои проблемы.
источник