Этот пост будет про обновление движка PyEngine - версия 1.1. В этой обнове довольно много интересных новых функций, о которых я сегодня расскажу. Через неделю выйдет более подробная документация обо всём движке. Скачать
1) Анимация
Небольшой пакет для анимации был даже в самой первой версии движка, однако я сделал filereader(считыватель файлов). Файл типа .txt. Вот, как он работает:
<название_анимации> <путь к файлам> <тип файлов>;<задержка перед каждым кадром>
Файлы должны храниться по индексу в одной папке. Например:
animations/
player/
idle/
0.jpg
1.jpg
run/
0.png
1.png
2.png
Ну а вот, как это выглядит в файле:
Idle animations/player/idle .jpg;10 10
Run animations/player/run .png;5 5 5
А для того, чтобы загрузить анимации в код, нужна следующая функция:
animation.loadAnimationFromFile(<путь к файлу>)
2) Переходы
Я добавил класс для перехода между сценами. Для начала, его нужно будет создать. У меня он будет называться просто transition. В параметрах указываем окно. В цикле всех сцен пишем:
transition.update(<экземпляр класса pyengine.Game>)
Для того, чтобы собственно загрузить анимацию перехода, используем функцию:
transition.loadFrames(<карды>,<тип>)
<тип> - это тип перехода. Пока есть два: "fade" и "custom". Первый затемняет экран, а второй вы можете сделать сами.
<карды> - это список. В нём должно быть множество экземпляров класса pygame.Surface. Но если в типе вы указали "fade", то можете просто ввести пустой список.
Для того, чтобы сменить сцену, просто пишете вместо:
game.setScene()
|
transition.setScene()
Всё! Это довольно просто...
3) Renderer
Теперь у меня есть собственный класс для отображения объектов. В нём присутствуют все методы из предыдущей версии (draw, particle и т.д.). Но также и появились новые! Точнее, всего два:
Они оба отвечают за свет
Сначала используйте:
game.renderer.setGlowRenderer(True/False,<изображение света>)
С первым параметром всё ясно. А вот со вторым нет. Я в галерее оставлю хорошую картинку света, которую можно использовать. После всего этого, можно вызвать метод:
game.renderer.glow(<позиция>, <радиус>, <цвет>)
Думаю, всё понятно. Единственное, может немного лагать.
4) Бонус!
Ещё я расскажу, как теперь можно рисовать примитивы.
Раньше, мы использовали функцию:
pg.draw.<фигура>()
Она и сейчас работает, но встаёт вопрос: А какую поверхность использовать?
Ответ: game.renderer.display
Ну, а чтобы обновить экран, можно использовать функцию:
game.renderer.update(<окно>, <количество кадров в секунде>, <часы>)
Где часы, можно использовать game.clock
В таком случае всё заработает.
На этом пока всё. Ждите новые обновления, девлоги и другие посты!Подписывайтесь и ставьте лайк.
