Я планирую изометрическую бизнес-игру, в которой игрок видит офис с обычной мебелью, такой как столы, доски и т. Д.
Персонажи (сотрудники / неигровые персонажи) в игре должны взаимодействовать с этими объектами, выполняя некоторые заранее определенные задачи, такие как набор текста на клавиатуре на столе или надпись на доске и т. Д.
В частности, меня интересует следующий сценарий:
Персонаж перемещается через офис (1) к своему столу (2), садится и начинает печатать (3).
Из того, что я понимаю, у меня был бы лист спрайта для движения персонажа (1) и статический спрайт для стола (2), но я не совсем понимаю, как будет обрабатываться третий шаг?
Существует ли комбинированный спрайт, содержащий как рабочий стол, так и персонажа? Я предполагаю, что нет, в противном случае мне понадобится спрайт-лист для каждой комбинации стола и персонажа.
Как это обычно обрабатывается?
РЕДАКТИРОВАТЬ:
Вот конкретный пример анимации из игры Theme Hospital. Вы можете посмотреть видео здесь .
Насколько я вижу, анимация разбита на несколько этапов.
Шаг 1 - Персонаж перемещается между столом и стулом.
Это говорит о том, что стул и стол на самом деле являются отдельными спрайтами.
Шаг 2 - Персонаж садится за анимацию
Обратите внимание, что в самом последнем кадре кресло ближе к столу.
Шаг 3 - Настольная анимация
Шаг 4 - Вставай анимацию
Это то же самое, что сесть, но играть в обратном направлении.
Шаг 5 - Отойди
Используйте обычную анимацию движения, чтобы отойти.
У меня есть вопросы, как лучше всего разделить эти анимации и как художник-график обычно предоставляет эти анимации?
Персонаж сидит и печатает на столе на самом деле три разных спрайта (стол, персонаж и стул)? Кто-нибудь знает примеры спрайтов подобных анимаций?
РЕДАКТИРОВАТЬ 2:
Думаю, меня больше всего беспокоит то, что у меня правильные ожидания относительно того, как спрайты будут выглядеть на самом деле. Я не могу нарисовать их сам, поэтому мне придется заплатить кому-то, чтобы сделать это, и я предполагаю, что есть какой-то лучший способ сделать анимацию такого рода?
Альтернативной идеей было бы включить изображение буфера глубины / Z со своими спрайтами, аналогично тому, как 3D API (OpenGL) гарантируют, что полигоны не перекрываются. Для основной спрайтовой игры это может быть просто набор из 0/1 битов (черно-белое растровое изображение) (хотя вы можете использовать больше уровней глубины, если хотите).
Если у вас есть комбинированный спрайт «Deskchair» и вы хотите, чтобы кресло появилось перед любыми другими спрайтами (то есть людьми) на этом квадрате, вы сделали бы Z-Buffer версию char «черным», в то время как стол был бы «белым». ,
Когда вы визуализируете динамический спрайт (человека) на этой плитке, он проверяет, какой цвет находится в буфере глубины. Для пикселей, которые равны 0 (черный), вы пропускаете рисование пикселов спрайтов человека и просто оставляете те пиксели стула там.
Вместо того, чтобы проверять каждый пиксель 1 за раз, более простым способом проверки будет умножение пикселей-спрайтов на значение буфера глубины, так как более близкая глубина будет равна 0, и отмена. Затем, конечно, вы должны выбрать цвет (если у вас нет альфа-канала).
Это, конечно, добавляет накладных расходов (хотя вы можете пропустить это для всего, что не требует нескольких уровней глубины, например, для стула). Вы также должны синхронизировать свои анимации (то есть человек должен соответствовать анимации на стуле). Это не дает вам такой же гибкости, как просто иметь целую кучу отдельных спрайтов.
источник