Майкл Моррисон - Создание игр для мобильных телефонов
- Название:Создание игр для мобильных телефонов
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Майкл Моррисон - Создание игр для мобильных телефонов краткое содержание
Книга «Создание игр для мобильных телефонов» – это практическое руководство, которое поможет разработать и реализовать игру для мобильного телефона.
Книга написана простым языком, не содержит сложной и скучной теории программирования и шаг за шагом знакомит с методикой создания технологии «plug-and-play» применительно к созданию огромного количества игр.
В издание включены подробные описания и примеры кодов для четырех игр, а также информация, необходимая для реализации вашей собственной задумки.
Если вы любите играть в игры и занимаетесь программированием, то эта книга – для вас!
Перевод: К. Михалкин
Создание игр для мобильных телефонов - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Каков же выход? Ну, одно из решений – это сделать все спрайты прямоугольными. Поскольку это не очень практично, то другой вариант – это использовать прозрачность, с помощью которой вы можете определить, какой цвет не используется или невидим. Когда механизм рисования встречает пиксели этого цвета, то он пропускает их, оставляя видимым фоновое изображение. Прозрачные цвета работают точно так же, как и фон в прогнозах погоды.
Создание глубины с помощью Z-слоевЧасто возникает необходимость поместить одни спрайты поверх других. Например, в военной игре могут летать самолеты и сбрасывать бомбы. Если спрайт самолета будет пролетать над спрайтом танка, то, вероятно, вы захотите, чтобы самолет оказался поверх танка, и следовательно, танк оказался позади самолета. Чтобы решить эту проблему, вы можете определить для каждого спрайта глубину или Z-слой (Z-order).
Z-слой – это относительная глубина спрайта на экране. Глубина спрайта называется Z-слоем по аналогии с другим измерением, z-осью. Спрайт может передвигаться по экрану в осях XY. Аналогично z-ось определяет глубину экрана или то, как спрайты перекрывают друг друга. Иначе говоря, Z-слой определяет глубину спрайта на экране. Из-за того что используется третья ось, вы можете подумать, что такие спрайты объемны. Но это не так. Дело в том, что третья ось используется лишь для определения взаимного перекрытия спрайтов.Совет Разработчику
Самый простой способ управлять Z-слоем в игре – это внимательно следить за тем, как вы создаете графику. К счастью, в MIDP API есть класс LayerManager, который упрощает управление множеством графических объектов (слоев) и их относительными Z-слоями. В главе 11 вы узнаете, как применять этот класс в мидлетах.
Чтобы вы лучше поняли, как работает Z-слой, давайте вернемся в старые добрые времена традиционной анимации. Вы уже знаете, что при создании традиционной анимации, например, мультфильмов Disney, для анимации объектов использовались целлулоидные листы, поскольку их можно было накладывать на фоновое изображение и перемещать независимо друг от друга. Такая анимация – ранняя версия спрайтовой анимации. Каждому целлулоидному листу соответствовал один Z-слой, определявший место листа в стопке. Если случалось так, что спрайт, который находится в верхних слоях, совпадал со спрайтом из нижних слоев, то он перекрывал его. Положение листов в стопке – это Z-слой, определяющий его видимость. То же самое относится и к спрайтам при использовании композиционной анимации, за исключением того, что Z-слои определяют порядок, в котором спрайты выводятся на экран, а не место в стопке листов.
Определение столкновений объектов
Нельзя завершить разговор об анимации, не рассмотрев вопрос о детектировании столкновений объектов. Определение столкновений – это метод детектирования столкновения спрайтов. Хотя этот метод напрямую не связан с созданием иллюзии движения, он тесно связан со спрайтовой анимацией и очень важен для игр.
Детектирование столкновений используется для определения физического взаимодействия друг с другом. Например, в игре Asteroids, если спрайт корабля сталкивается со спрайтом астероида, корабль разрушается и происходит взрыв. Детектирование столкновений – это механизм, встроенный для проверки столкновения корабля и астероида. Вероятно, вы подумаете, что это несложно. Нужно просто знать их местоположение на экране и проверить, совпадают ли они, не так ли? Все именно так, но подумайте, сколько проверок необходимо осуществить, если перемещается большое число спрайтов, каждый из которых нужно проверить на столкновение. Нетрудно представить, насколько сложной становится задача.
Неудивительно, что существует множество различных методик определения столкновений. Самый простой способ – это сравнить ограничивающие прямоугольники спрайтов. Этот метод весьма эффективен, но если ваши спрайты непрямоугольной формы, то столкновения будут определяться с погрешностями. Углы прямоугольников могут перекрываться, и таким образом будет определено столкновение, в то время как сами изображения не перекрываются. Чем меньше форма объекта похожа на прямоугольник, тем больше погрешность определения столкновения. На рис. 5.3 показано, как работает этот метод определения столкновений.
Рис. 5.3. Детектирование столкновений с помощью ограничивающих прямоугольников сводится к простой проверке их перекрытия
На рисунке перекрывающиеся области затемнены. Вы можете видеть, насколько неточен этот метод, если объекты непрямоугольной формы. Улучшить эту технику можно, немного уменьшив размер ограничивающего прямоугольника, тем самым снижая ошибку. Этот метод дает небольшое улучшение, однако он может повлечь за собой появление другой ошибки, не определяя истинное столкновение спрайтов. На рис. 5.4 показано, как уменьшение ограничивающего прямоугольника может уменьшить ошибку определения столкновения объектов. Этот метод эффективен ровно настолько, насколько эффективен метод, применяющий обычные ограничивающие прямоугольники, поскольку в обоих случаях проверяется наложение прямоугольников.
Рис. 5.4. Детектирование столкновений с помощью уменьшенных ограничивающих прямоугольников аналогично обычному методу проверкиБолее точная техника детектирования столкновений основана на данных изображения спрайта. В ее основе лежит проверка перекрытия прозрачных частей спрайтовых изображений. Вы получаете сообщение о столкновении только в том случае, если спрайтовые изображения перекрываются. Это идеальный метод детектирования столкновений, поскольку он позволяет объектам произвольной формы перемещаться относительно друг друга без ошибок. На рис. 5.5 показано детектирование столкновений с помощью данных спрайтовых изображений.
Рис. 5.5. Детектирование столкновений с помощью данных спрайтовых изображений проверяет перекрытие особых пикселей двух спрайтовК сожалению, техника, показанная на рис. 5.5, требует больших ресурсов мобильного устройства по сравнению с методикой определения столкновений с помощью ограничивающих прямоугольников и может существенно замедлить скорость выполнения игры. Какой метод определения столкновений выбрать, зависит от конкретной игры, насколько в ней важно точное детектирование, и какой объем необходимых ресурсов не приведет к снижению производительности. Вы узнаете, что для большинства игр целесообразно применять детектирование столкновений с помощью уменьшенных ограничивающих прямоугольников.
Использование спрайтовой анимации в мобильных играх
Теперь, когда вы имеете общее представление об основных типах анимации, вы, вероятно, хотите узнать, какой из них используется в мобильных играх. Я уже несколько предвосхитил события, сказав, что композиционная анимация наиболее эффективна и дает большую свободу действий, чем какой-либо другой метод. Но в реальности в большинстве игр применяется комбинация двух анимационных техник. Каждая из этих техник дает вам возможности, которые трудно применить, не используя их в совокупности.
Читать дальшеИнтервал:
Закладка: