Спрайты в Unity: определение, как их создавать и использовать
Как создать спрайт для Unity? Для этого в игровом движке предусмотрены свои инструменты, о которых мы поговорим чуть ниже.
Спрайт — это графический объект, который используется при создании 2D-игр. Спрайт-технология пришла к нам еще в 80-х годах. Первые игры делались с применением спрайтов. Все знают, что если взять несколько похожих картинок и в определенной последовательности быстро их «прокрутить», то получится анимация или видео. Многие вспомнят о том, что видео — это 24 кадра в секунду, которые видит человек. Именно по такой «прокрутке» кадров и происходит создание спрайт-объектов. К примеру, берется игровой персонаж, а затем создается несколько разных его изображений. Потом эти изображения помещают в контейнер и зацикливают их прокрутку. Таким образом, получается анимация. Если показ картинок «подвязать» к кнопкам управления, тогда появляется полноценный игровой объект, который будет реагировать на нажатие кнопок.
Например, при движении вправо показываются одни картинки, влево — другие. А у пользователя создается впечатление, что игровой персонаж анимирован. Повторимся, что по факту происходит только смена картинок в кадре. В Unity работа со спрайтами внедрена по умолчанию, когда движок настроен на разработку 2D-игр. Если спрайт посмотреть в 3D-режиме, тогда он окажется «плоским», как лист бумаги. Все потому, что спрайт — это 2D-объект и у него нет Z-ширины.
Как создать спрайт для Unity
Когда на Unity создается новый спрайт, ему необходимо задать текстуру. Текстура — это изображение, которое отражает внешний вид спрайта. Такое изображение прикрепляется к спрайту, создавая GameObject, который можно использовать в игре.
Если нет возможности сразу добавить текстуру в проект, но наличие спрайта в игре вам обязательно, тогда можно применить «заполнитель спрайтов» на Unity. Заполнитель — это встроенный инструмент, который создает спрайт в виде простых геометрических фигур типа треугольника, квадрата, круга и заполняет их белым цветом.
В дальнейшем всегда будет доступно редактирование «заполнителя».
Чтобы создать спрайт на Unity, пройдите по следующему пути:
Assets → Create → Sprites
Подход с использованием заполнителей для спрайтов актуален в том случае, когда графика для спрайта не готова, но нужно продолжать разработку проекта.
Редактирование спрайтов в Unity
Создать спрайт для Unity несложно, как это делается — описано чуть выше. Вся сложность заключается в редактировании спрайта. Чем сложнее игровой спрайт и сложнее проект, тем труднее будет редактировать спрайт.
Для редактирования спрайтов в Unity есть встроенный инструмент — Sprite Editor. Чтобы запустить редактор спрайтов, нужно:
Открыть 2D-изображение в представлении проекта «Project View». Спрайт, который находится в режиме «Scene View», редактироваться не может.
Найти кнопку «Sprite Editor».
Вам откроется редактор спрайтов, в котором будет несколько доступных инструментов. Например: изменение масштаба, изменение расцветки, изменение местоположения спрайта на экране, поворот спрайта, настроить прозрачность, обрезать и др.
Настройка спрайтов может происходить в ручном режиме, если вы являетесь уверенным пользователем Unity. Но можно включить автоматический режим, и движок самостоятельно позаботится о настройках вашего спрайта. Обычно автоматическое редактирование спрайта применяют в качестве «грубой» обработки. Потом все равно придется делать более тонкое редактирование «руками». Но нужно понимать, что редактирование спрайта не будет таким насыщенным, как редактирование 3D-объекта. Спрайт — это картинка.
Средство визуализации спрайтов в Unity
Отобразить спрайт в Unity помогает компонент Sprite Renderer. Его нужно добавлять в GameObject через меню Components:
Components → Rendering → Sprite Renderer
Когда создается 3D-графика, тогда способов отразить объемный объект очень много.
Например, внешний вид объекта будет зависеть от его положения на экране, освещенности, перемещения, положения камеры и др. С 2D-объектами этого всего нет.
Однако важно, чтобы соблюдался приоритет между спрайтами. То есть важно определить, какой спрайт может накладываться на другой спрайт в случаях их пересечения. Sprite Renderer как раз отвечает за соблюдение приоритетности. Делается это при помощи применения технологии сортировки слоев. То есть спрайты с низким приоритетом располагаются на низших слоях и могут перекрываться спрайтами с более высоким приоритетом.
Заключение
Как создать спрайт для Unity? Добавить спрайт в Unity несложно. Спрайт — это анимированная картинка, состоящая из множества кадров. О подготовке спрайта для Unity нужно позаботиться заранее. Благо для этого есть много программ. Например:
Paint Net;
Krita;
SAI 2;
GIMP;
Clip Studio Paint;
и др.
Библиотека Pygame — работа со спрайтами (часть 2)
Автор Амина С. На чтение 10 мин Опубликовано
Python – функциональный язык программирования, который может использоваться для реализации самых разных задач. Это не только создание инструментальных приложений, но и игр. Ранее мы рассматривали библиотеку Pygame, разбирали игровые циклы и некоторые другие аспекты процесса создания игры. Сегодня же мы разберемся в теме спрайтов. Мы поймем, что это такое, для чего они могут использоваться. Продолжаем рассматривать аспекты создания игр в Python c использованием библиотеки Pygame. Если вы – начинающий программист, это руководство вам поможет разобраться в том, что такое спрайты и как с ними работать в Pygame.
Содержание
- Понятие спрайта
- Как создать спрайт?
- Как заставить спрайт двигаться?
- Код урока
Понятие спрайта
Под спрайтом подразумевается элемент компьютерной графики, который представляет двигающийся элемент экрана.
Если брать двухмерную игру, то абсолютно все на экране – это спрайты. С ними можно выполнять различные действия: анимирование, заставлять их взаимодействовать друг с другом либо передавать управление человеку, который выступает игроком.
Причем в некоторых двумерных играх спрайты такие реалистичные, что они похожи больше на 3Д. И в старые времена, когда мощности компьютеров не хватало для того, чтобы отрисовывать объемные фигуры, такие варианты спрайтов были очень популярными.
Спрайты используются сейчас и в 3Д играх. Например, чтобы задать текстуру объектов.
Чтобы загрузить или выполнять отрисовку спрайтов, используются разделы «Обновление» и «Визуализация» игрового цикла. Нетрудно понять, что если в игре большое количество спрайтов, то в этом случае цикл станет большим и запутанным. Для того, чтобы решить эту проблему, используется группировка спрайтов.
Под набором спрайтов подразумевается такая их совокупность, которая позволяет им отображаться в один момент времени.
Чтобы создать группу спрайтов, необходимо написать строки кода, подобные этим.
clock = pygame.time.Clock() all_sprites = pygame.sprite.Group()
Также этой возможностью можно воспользоваться путем добавления группы в цикл целиком.
# Обновление all_sprites.update() # Отрисовка screen.fill(BLACK) all_sprites.draw(screen)
Теперь в процессе создания любого спрайта нужно удостовериться, что он добавляется в категорию all_sprites.
Отрисовка подобного спрайта на экране будет производиться автоматически. То же самое и относится к его обновлению в цикле.
Информацию о том, что делает каждый фрагмент приведенного выше кода, вы можете получить в комментариях, обозначенных символом #.
Как создать спрайт?
Сейчас можно приступать к созданию спрайта. В рассматриваемой нами библиотеки все они являются объектами, ибо Python — объектно-ориентированный язык программирования. Если прежде с этим типом данных вы не работали, то достаточно понимать, что с помощью объектов удобно осуществлять группировку объектов и кода в что-то единое.
Изначально это может запутывать, но через некоторое время станет понятно, насколько простая у объектов логика, и как они облегчают жизнь. И Pygame – отличный способ потренироваться в объектно-ориентированном программировании.
Что касается спрайтов, то они, как и любые другие объекты, имеют все характеристики: наследование, инкапсуляция, полиморфизм.
Но об этом стоит поговорить уже отдельно.
Для начала попробуем определить новый спрайт.
class Player(pygame.sprite.Sprite):
Class говорит Python, что нужно определить спрайт игрока, который будет выступать в качестве нового объекта. Его тип — pygame.sprite.Sprite. Это означает, что он базируется на Sprite по умолчанию в Pygame.
При определении класса в первую очередь необходима специальная функция __init__(), которая включает инструкции, которые будет выполнять интерпретатор Python при генерации объекта данного типа. Кроме того, каждый спрайт в Pygame должен иметь два свойства: image и rect.
class Player(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.Surface((50, 50)) self.image.fill(GREEN) self.rect = self.image.get_rect()
Первая строка Pygame.sprite.Sprite.__init__(self) обязательна в Pygame — она включает встроенный инициализатор класса Sprite. Затем вам нужно задать свойство image. А пока создаем квадрат 50×50 и заливаем его в зеленый цвет (то бишь, green). Чуть позже вы поймете, каким образом осуществляется изменение внешнего вида спрайта с помощью, например, человека или космического корабля, а пока хватит одного квадрата.
Затем вам нужно задать rect спрайта. Это означает прямоугольник. Они применяются в Pygame для понимания координат, в которых расположены конкретные объекты. Инструкция get_rect() оценивает изображение и вычисляет окружающий его прямоугольник.
rect можно применять для задания любого местоположения спрайта, доступного разработчику.
Начнем с создания центрированного спрайта:
class Player(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.Surface((50, 50)) self.image.fill(GREEN) self.rect = self.image.get_rect() self.rect.center = (WIDTH / 2, HEIGHT / 2
Теперь, после того, как мы определили спрайт игрока Player, необходимо создать его. Для этого инициализируется экземпляр одноименного класса. Помимо этого, необходимо в обязательном порядке добавить спрайт в группу с названием all_sprites.
all_sprites = pygame.sprite.Group() player = Player() all_sprites.add(player)
Теперь, при запуске приложения, в центре мы увидим зеленый квадрат. Если изменять значения WIDTH и HEIGHT в настройках приложения, можно обеспечить достаточное количество пространства для того, чтобы в следующем шаге сделать этот спрайт двигающимся.
Как заставить спрайт двигаться?
В игровом цикле можно воспользоваться функцией all_sprites.update(), которая запускает функцию update() всех спрайтов. Чтобы заставить спрайт перемещаться, необходимо задать правила, по которым будет осуществляться его обновление.
class Player(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.Surface((50, 50)) self.image.fill(GREEN) self.rect = self.image.get_rect() self.rect.center = (WIDTH / 2, HEIGHT / 2) def update(self): self.rect.x += 5
Это означает, что при каждом игровом цикле x-координата спрайта будет изменяться на 5 пикселей в большую сторону. Теперь давайте попробуем запустить приложение, чтобы проверить, как он прячется за пределами экрана, достигая правой стороны.
Видим, что спрайт достигает правой стороны, и исчезает. Точнее, он просто оказывается за пределами области видимости. Чтобы исправить такую проблему, необходимо заставить спрайт двигаться по кругу. После того, как он достигает правой стороны экрана, он просто перемещается влево. Это на практике реализуется с использованием элемента управления rect спрайта.
Проще говоря, если левая сторона прямоугольника пропадает с экрана, то тогда просто нужно задать значение правого края на уровне 0.
class Player(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.Surface((50, 50)) self.image.fill(GREEN) self.rect = self.image.get_rect() self.rect.center = (WIDTH / 2, HEIGHT / 2) def update(self): self.rect.x += 5 if self.rect.left > WIDTH: self.rect.right = 0
После этого, вы увидите, что спрайт начинает двигаться по кругу.
В принципе, мы реализовали базовую задачу, которую мы поставили для достижения целей этого урока. Теперь просто необходимо потренироваться в том, чтобы изменять координаты объектов спрайтов, перемещать их.
При этом важно помнить, что все элементы, размещаемые в методы update(), будут находиться в каждом кадре, который есть в игре.
Какое можно придумать упражнение для закрепления этих знаний? Например, попробовать научить спрайт двигаться не слева направо, как в рассмотренном нами примере, а по вертикали. Или же можно его заставить отталкиваться от стен. Знаний, полученных в этом уроке, должно быть достаточно для того, чтобы достичь любой из этих целей.
Код урока
А теперь приведем итоговый код программы, выполняющей описанные в этом уроке задачи.
# Pygame шаблон - скелет для нового проекта Pygame import pygame import random WIDTH = 800 HEIGHT = 650 FPS = 30 # Задаем цвета WHITE = (255, 255, 255) BLACK = (0, 0, 0) RED = (255, 0, 0) GREEN = (0, 255, 0) BLUE = (0, 0, 255) class Player(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.Surface((50, 50)) self.image.fill(GREEN) self.rect = self.image.get_rect() self.rect.center = (WIDTH / 2, HEIGHT / 2) def update(self): self.rect.x += 5 if self.rect.left > WIDTH: self.rect.right = 0 # Создаем игру и окно pygame.init() pygame.mixer.init() screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("My Game") clock = pygame.time.Clock() all_sprites = pygame.sprite.Group() player = Player() all_sprites.add(player) # Цикл игры running = True while running: # Держим цикл на правильной скорости clock.
tick(FPS) # Ввод процесса (события) for event in pygame.event.get(): # check for closing window if event.type == pygame.QUIT: running = False # Обновление all_sprites.update() # Рендеринг screen.fill(BLACK) all_sprites.draw(screen) # После отрисовки всего, переворачиваем экран pygame.display.flip() pygame.quit()
В следующем уроке речь пойдет о том, как использовать арт в спрайтах — перейти от обычного квадрата к анимированному персонажу.
А далее мы более подробно поговорим о спрайтах и том, как с ними работать.
Оцените качество статьи. Нам важно ваше мнение:
Создание спрайтов — настоящий Python
В этом уроке вы создадите игрока в виде спрайта . Вот как вы используете Sprite объектов с текущей игрой для определения игрока.
Вставьте этот код после строки 18:
16# Определите константы для ширины и высоты экрана. 17SCREEN_WIDTH = 800 18SCREEN_HEIGHT = 600 19 20# Определите объект Player, расширив pygame.sprite.Sprite 21# Поверхность, отрисовываемая на экране, теперь является атрибутом игрока. Игрок 22 класса (pygame.sprite.Sprite): 23 по определению __init__(сам): 24 super(Игрок, сам).__init__() 25 self.surf = pygame.Surface((75, 25)) 26 self.surf.fill((255, 255, 255)) 27 self.rect = self.surf.get_rect() 28 29# Инициализировать pygame 30pygame.init()
Вам необходимо удалить строки с 59 по 72, которые включали создание предыдущего объекта серфинга и его отображение. Эти строки будут заменены отображением спрайта нового игрока. Вы также измените фон экрана на черный. Вот все изменения, которые вы сделаете на этом уроке:
1# Импорт модуля pygame 2импорт pygame 3 4# Импортируйте pygame.locals для более удобного доступа к ключевым координатам 5# Обновлено для соответствия стандартам Flake8 и Black.6из импорта pygame.locals ( 7 К_УП, 8 К_ВНИЗ, 9К_ЛЕВО, 10 К_ПРАВО, 11 К_ESCAPE, 12 КЛЮЧ, 13 ВЫЙТИ, 14) 15 16# Определить константы для ширины и высоты экрана 17SCREEN_WIDTH = 800 18SCREEN_HEIGHT = 600 19 20# Определите объект Player, расширив pygame.sprite.Sprite 21# Поверхность, отрисовываемая на экране, теперь является атрибутом игрока. Игрок 22 класса (pygame.sprite.Sprite): 23 по определению __init__(сам): 24 super(Игрок, сам).__init__() 25 self.surf = pygame.Surface((75, 25)) 26 self.surf.fill((255, 255, 255)) 27 self.rect = self.surf.get_rect() 28 29# Инициализировать pygame 30pygame.init() 31 32# Создать экранный объект 33# Размер определяется константами SCREEN_WIDTH и SCREEN_HEIGHT 34screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) 35 36# Создать экземпляр игрока. Сейчас это просто прямоугольник. 37player = Игрок() 38 39# Переменная для поддержания работы основного цикла 40работ = Истина 41 42# Основной цикл 43во время работы: 44 # Посмотреть каждое событие в очереди 45 для события в pygame.
event.get(): 46 # Пользователь нажал клавишу? 47, если event.type == KEYDOWN: 48 # Это была клавиша Escape? Если это так, остановите цикл. 49если event.key == K_ESCAPE: 50 работает = Ложь 51 # Нажал ли пользователь кнопку закрытия окна? Если это так, остановите цикл. 52 elif event.type == ВЫЙТИ: 53 работает = Ложь 54 55 # Заливаем экран черным 56 screen.fill((0, 0, 0)) 57 58 # Рисуем игрока на экране 59 screen.blit(player.surf, player.rect) 60 61 # Обновить дисплей 62 pygame.display.flip()
Для получения дополнительной информации о классе Sprite из pygame документации, а также дополнительную информацию о спрайтах и использовании наследования с super() , ознакомьтесь со следующими ресурсами:
-
Класс Spriteизpygameдокументации - Статья о спрайтах в Википедии
- Усовершенствуйте свои классы с помощью Python super()
Дополнительные сведения о цветовой модели RGB см.
в следующих источниках:
- Цветовая модель RGB
- Веб-цвета
10 лучших инструментов для создания пиксельной графики и спрайтов, о которых должен знать каждый профессиональный разработчик | Кристиан Фельдбахер
2D-спрайты являются визуальными строительными блоками почти всех мобильных игр, а стиль пиксельной графики, ставший синонимом видеоигр, до сих пор популярен среди разработчиков игр. С помощью пиксельной графики и 2D-спрайтов вы можете быстро анимировать свои игровые объекты и создавать динамические впечатления от просмотра для ваших игроков.
Умение работать со спрайтами и пиксельной графикой стало важным навыком для всех разработчиков мобильных игр. Читайте дальше, чтобы узнать, как создавать собственные спрайты и где найти ресурсы для создания собственного пиксельного искусства!
Примечание : мы собрали еще бесплатных ресурса для разработчиков игр в конце этого сайта. Не забудьте проверить и их!
Пиксель-арт — это форма цифрового искусства, в которой цвет применяется к отдельным пикселям для создания изображения.
Термин «пиксельное искусство» впервые был опубликован в 1982 году, хотя до этого концепция существовала как минимум 10 лет.
Пиксельные изображения сохраняются в форматах файлов, использующих сжатие данных без потерь, таких как формат GIF или PNG. Формат JPEG не рекомендуется, так как он использует сжатие с потерями, которое оставляет артефакты на ваших изображениях.
Источник: Википедия
Пиксель-арт можно разделить на две основные формы: изометрические и неизометрические. Изометрическая пиксельная графика имеет трехмерный вид, хотя изображение по-прежнему представляет собой двухмерную форму.
Неизометрическая пиксельная графика представляет одну сторону объекта, например верхнюю или переднюю.
Спрайты — это анимации, такие как персонажи или объекты, которые можно использовать в вашей мобильной игре. Их можно сделать из любого вообразимого источника изображения и анимировать несколькими способами. Они являются одним из наиболее часто используемых визуальных компонентов для разработки мобильных игр и имеют долгую историю в индустрии разработки игр.![]()
Базовый пример анимированного спрайта можно увидеть ниже:
Эта простая анимация выглядит как одно изображение размером 256×256, но на самом деле это изображение размером 512×256, которое перемещает кадр изображения для создания эффекта подпрыгивания.
Это изображение размером 512×256 известно как лист спрайтов, поэтому вы можете анимировать свои спрайты. Анимация спрайтов просто показывает разные части листа спрайтов в разное время для создания анимации. Существует множество возможных анимаций для спрайтов, но приведенный выше пример показывает самое простое использование спрайта.
Если бы вам приходилось создавать каждую сцену игры как одно изображение, впоследствии было бы намного сложнее редактировать. С помощью спрайтов вы можете добавлять и удалять визуальные элементы по своему усмотрению, не редактируя какие-либо другие визуальные компоненты вашей сцены. Это упрощает разработку сложных игровых сцен и введение новых персонажей и объектов, с которыми могут взаимодействовать ваши игроки.![]()
Спрайты также обеспечивают повышение производительности, так как они меньше заставляют вашу игру многократно вызывать несколько изображений для отображения на экране. Вместо этого вызывается лист спрайтов, а затем по желанию отображается другая его часть. Вашей игре гораздо проще вызвать изображение один раз и отобразить его множеством способов, чем многократно вызывать новые источники изображения.
Мы уже рассмотрели, как работают спрайты, но теперь пришло время приступить к их созданию. Чтобы вам было проще экспериментировать с созданием спрайтов, вы можете использовать один из инструментов редактора пикселей, перечисленных ниже. Их можно бесплатно загрузить или использовать в Интернете, и они могут помочь вам создать пиксельную графику для вашего листа спрайтов.
PiskelApp — бесплатный пиксельный онлайн-редактор с упором на создание спрайтов. Он позволяет вам сохранять пиксельную графику в Интернете, а также имеет функцию импорта, поэтому вы можете использовать ее для редактирования существующей пиксельной графики.
PiskelApp имеет простой пользовательский интерфейс и является отличным выбором, если вы хотите сразу погрузиться в создание листа спрайтов.
Pixie — еще один полнофункциональный онлайн-редактор пикселей. Хотя он не так хорошо подходит для создания листов спрайтов, как PiskelApp, он по-прежнему очень прост в использовании и является хорошим выбором для тех, кто хочет дать волю своему воображению. Белый холст является стандартной отправной точкой для этого инструмента и способствует рисованию от руки, а не жесткой сетке.
Pixlr — немного более продвинутый пиксельный редактор по сравнению с предыдущими редакторами с большим набором инструментов для рисования. Он предлагает ту же функцию онлайн-сохранения, что и PiskelApp, но не так хорошо подходит для создания листов спрайтов. Если вы хотите избежать 16-битного стиля, который поощряет PiskelApp, воспользуйтесь этим инструментом.
GrafX2 — это программа для рисования растровых изображений, которая включает ряд инструментов и эффектов, которые делают ее особенно полезной для разработки игровой графики, пиксельной графики и листов спрайтов.
Его можно загрузить бесплатно, и он доступен на всех основных настольных платформах.
GIMP — это редактор изображений с открытым исходным кодом для настольных ПК, который можно использовать для любых целей, от обработки фотографий до создания оригинальных иллюстраций. Вы также можете использовать GIMP для создания пиксельной графики и листов спрайтов. Хотя новичкам нужно немного научиться, GIMP — это мощный инструмент, который может удовлетворить практически все потребности в редактировании изображений. Вы можете увидеть учебник по настройке GIMP для пиксельной графики здесь:
Если вы ищете упрощенный инструмент, который позволит вам сосредоточиться на создании великолепных пиксельных изображений, обратите внимание на PyxleOS. Это настольное приложение с открытым исходным кодом специально разработано для создания пиксельной графики, и его чрезвычайно легко подобрать и использовать.
LunaPic — это онлайн-инструмент с рядом возможностей для редактирования изображений.
Одной из его многочисленных функций является возможность пикселизации изображений, даже фотографий. Вам просто нужно загрузить свое изображение, нажать «Настроить» -> «Пикселировать», выбрать, насколько сильно вы хотите сделать свое изображение пиксельным, и готово!
GraphicsGale — это редактор анимационной графики, доступный как в бесплатной, так и в платной версиях. Бесплатная версия по-прежнему позволяет создавать и сохранять пиксельную графику в формате png, и это все, что вам нужно для вашего листа спрайтов. GraphicsGale — это простой в использовании инструмент с широким набором инструментов для создания изображений.
Paint.net — это бесплатная программа для редактирования изображений и фотографий для Windows. Это мощный инструмент, за которым стоит большое сообщество, которое покажет вам, как создавать пиксельную графику и листы спрайтов. На YouTube можно найти множество руководств по пиксельной графике, например приведенное ниже.
Make Pixel Art — это забавный онлайн-инструмент, который позволяет сразу начать рисовать пиксели.
Хотя это может показаться немного простым по сравнению с некоторыми другими инструментами, это может быть вашим лучшим выбором, если вам нужно быстро набросать идею или создать прототип объекта или персонажа для вашей игры.
Если вы хотите следовать следующему разделу этого поста, вы можете перерисовать спрайт растения с помощью одного из инструментов выше или загрузить его здесь!
Теперь, когда вы создали спрайт, пришло время протестировать его на своем мобильном телефоне! Для отображения спрайтов вы можете использовать Felgo, кроссплатформенный игровой движок, специализирующийся на 2D-играх. Вот пример кода, который отображает анимированный пиксельный спрайт в Felgo:
Запустите этот код на вашем устройстве iOS или Android сейчас, с перезагрузкой кода в реальном времени поддерживается). Вы можете изменить исходный код в веб-редакторе и немедленно увидеть эффект на своем устройстве с помощью Felgo Live Code Reloading . Посмотрите это короткое видео о том, как использовать Felgo Live Reload для ускорения процесса разработки игр:Вот и все! Добавить спрайт в вашу игру очень просто с компонентом SpriteSequenceVPlay и SpriteVPlay — всего 23 строки кода , включая новые строки для полной игры!
Важно установить для свойств frameWidth и frameHeight размер, который вы хотите, чтобы спрайт отображался в вашей игре.


Вам откроется редактор спрайтов, в котором будет несколько доступных инструментов. Например: изменение масштаба, изменение расцветки, изменение местоположения спрайта на экране, поворот спрайта, настроить прозрачность, обрезать и др.
Например, внешний вид объекта будет зависеть от его положения на экране, освещенности, перемещения, положения камеры и др. С 2D-объектами этого всего нет.
sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((50, 50))
self.image.fill(GREEN)
self.rect = self.image.get_rect()
sprite.Group()
player = Player()
all_sprites.add(player)
tick(FPS)
# Ввод процесса (события)
for event in pygame.event.get():
# check for closing window
if event.type == pygame.QUIT:
running = False
# Обновление
all_sprites.update()
# Рендеринг
screen.fill(BLACK)
all_sprites.draw(screen)
# После отрисовки всего, переворачиваем экран
pygame.display.flip()
pygame.quit()
6из импорта pygame.locals (
7 К_УП,
8 К_ВНИЗ,
9К_ЛЕВО,
10 К_ПРАВО,
11 К_ESCAPE,
12 КЛЮЧ,
13 ВЫЙТИ,
14)
15
16# Определить константы для ширины и высоты экрана
17SCREEN_WIDTH = 800
18SCREEN_HEIGHT = 600
19
20# Определите объект Player, расширив pygame.sprite.Sprite
21# Поверхность, отрисовываемая на экране, теперь является атрибутом игрока.
Игрок 22 класса (pygame.sprite.Sprite):
23 по определению __init__(сам):
24 super(Игрок, сам).__init__()
25 self.surf = pygame.Surface((75, 25))
26 self.surf.fill((255, 255, 255))
27 self.rect = self.surf.get_rect()
28
29# Инициализировать pygame
30pygame.init()
31
32# Создать экранный объект
33# Размер определяется константами SCREEN_WIDTH и SCREEN_HEIGHT
34screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
35
36# Создать экземпляр игрока. Сейчас это просто прямоугольник.
37player = Игрок()
38
39# Переменная для поддержания работы основного цикла
40работ = Истина
41
42# Основной цикл
43во время работы:
44 # Посмотреть каждое событие в очереди
45 для события в pygame.
event.get():
46 # Пользователь нажал клавишу?
47, если event.type == KEYDOWN:
48 # Это была клавиша Escape? Если это так, остановите цикл.
49если event.key == K_ESCAPE:
50 работает = Ложь
51 # Нажал ли пользователь кнопку закрытия окна? Если это так, остановите цикл.
52 elif event.type == ВЫЙТИ:
53 работает = Ложь
54
55 # Заливаем экран черным
56 screen.fill((0, 0, 0))
57
58 # Рисуем игрока на экране
59 screen.blit(player.surf, player.rect)
60
61 # Обновить дисплей
62 pygame.display.flip()