Найти в Дзене
ovnoCod

Python. Игра на Ursina Engine 01

Оглавление
Ursina Engine
Ursina Engine

Попробуем создать 2d платформер на игровом движке Ursina Engine.

Для начала установим пакет на Python, для этого отроем командную строку и введем команду:

pip install ursina

Создадим python файл, назвать можно как угодно, у нас будет main.py

Откроем файл в редакторе, в любом который вам нравится.

Начнем писать код. Для начала импортируем модуль Ursina, и создадим окно:

Ursina Engine
Ursina Engine

Используем встроенный платформер

Простой способ начать писать код - использовать встроенный контроллер.

Для этого импортируем его, ну и создадим объект player:

Ursina Engine
Ursina Engine

Так же существуют и другие параметры, как: jump_height, walk_speed и gravity. Но сейчас они нам не нужны.

Если сейчас запустим наш код, то мы увидим как наш объект падает вниз. Все это из-за того, что внизу нет ничего. Давайте создадим почву:

Ursina Engine
Ursina Engine

А вот теперь, наш персонаж никуда не упадет, если запустим игру. Однако, игрой это трудно назвать, поэтому:

Создадим генератор уровня

Идея заключается в том, что бы нарисовать уровень на картинке по пиксельно, дальше считать эту картинку и создать уровень.

Ursina Engine
Ursina Engine

Создадим в графическом редакторе файл: platformer_tutorial_level.png с разрешением 16px высоту и 30px в ширину. Черный цвет - грунт. Зеленый - наш игрок, где он будет находиться в самом начале запуска нашей игры. Сохраните эту картинку там же, где находится ваш файл с кодом.

Для создания уровня, мы будем считывать картинку попиксельно.

Надеюсь, у вас достаточно знаний в Python, что бы понять следующий код:

Ursina Engine
Ursina Engine

Настройка камеры

Ursina Engine
Ursina Engine

camera.position - начальная позиция нашей камеры по горизонтали.

camera.pov - устанавливает значение, сколько мы видим по вертикале.

Анимация

Если у вас есть несколько картинок, покадровых для анимации, например с именами: image_000.png, image_001.png, image_002.png и так далее, то вы просто можете засунуть их в Объект Animation так: Animation('image').

Если же у вас один файл с расширением gif, то так Animation('image.gif').

Пример: player.walk_animation = Animation('player_walk')

В встроенном контроллере, который мы добавили в самом начале, есть объект Animator. Который следит за поведением подключаемой анимации. Следит он за тем, что бы одновременно не включалось несколько анимаций, ведь иначе, они будут накладываться друг на друга.

self.animator = Animator({'idle' : None, 'walk' : None, 'jump' : None})

Противник и смерть

Добавим объект, с прикосновением об которого, наш игрок умрет.

Ursina Engine
Ursina Engine

Начала игры:

app.run()

Итог:

Ursina Engine
Ursina Engine

Всем спасибо. Не забудьте подписаться и поставить лайк.