19.03.2023
статья
Свет и переходы! PyEngine - 1.1

Всем привет!

Этот пост будет про обновление движка 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 и т.д.). Но также и появились новые! Точнее, всего два:

  • setGlowRenderer
  • glow

Они оба отвечают за свет
Сначала используйте:

game.renderer.setGlowRenderer(True/False,<изображение света>)

С первым параметром всё ясно. А вот со вторым нет. Я в галерее оставлю хорошую картинку света, которую можно использовать. После всего этого, можно вызвать метод:

game.renderer.glow(<позиция>, <радиус>, <цвет>)

Думаю, всё понятно. Единственное, может немного лагать.


4) Бонус!
Ещё я расскажу, как теперь можно рисовать примитивы.
Раньше, мы использовали функцию:

pg.draw.<фигура>()

Она и сейчас работает, но встаёт вопрос: А какую поверхность использовать?
Ответ: game.renderer.display
Ну, а чтобы обновить экран, можно использовать функцию:

game.renderer.update(<окно>, <количество кадров в секунде>, <часы>)

Где часы, можно использовать game.clock
В таком случае всё заработает.


На этом пока всё. Ждите новые обновления, девлоги и другие посты!Подписывайтесь и ставьте лайк.

Всем пока!

Свет и переходы! PyEngine - 1.1
Комментарии (3)
Можешь пожалуйста выложить глобальную обучалку по всем классам и их функциям?
Ответ на этот комментарий
19 марта, 2023 в 21:28
|
Петр Х. PGStudio
Можешь пожалуйста выложить глобальную обучалку по всем классам и их функциям?
Через неделю
Ответ на этот комментарий
20 марта, 2023 в 00:01
|
Константин Е. Faratos
Через неделю
спасибо