Рассмотрим структуру и код проекта Годот Phisics-Based Platformer 2D.Рассмотрим 2д игра на годот.Phisics-Based Platformer 2D 2
Начнем с рассмотрения структуры сцены Player.tscn. Корневым узлом выступает RigidBody2D, внутри которого размещены Sprite2D, AnimationPlayer, Camera2D, Marker2D, CollisionShape2D, CollisionPolygon2D, CanvasLayer, а также два AudioStreamPlayer2D:
При анализе кода сцены Player.tscn прослеживается реализация паттерна «Состояние» (State). В нем обрабатываются различные состояния главного персонажа-робота: на полу, в прыжке, в режиме стрельбы. Также в коде загружаются звуковые эффекты, спрайты дыма от выстрела и динамически создаются сцены пули и врага:
Теперь рассмотрим сцену пули. Ее корневым узлом является RigidBody2D, внутри которого размещены GPUParticles2D, Sprite2D, CollisionShape2D, AnimationPlayer и Timer. Таймер настроен так, что через 1 секунду запускает анимацию исчезновения спрайта и частиц:
Теперь рассмотрим платформы. В проекте встречаются два их вида: moving_platform.tscn и one_way_platform.tscn. Первая состоит из корневого узла CharacterBody2D с дочерними Sprite2D и CollisionPolygon2D. Вторая построена на основе StaticBody2D с вложенными Sprite2D и CollisionShape2D:
Теперь рассмотрим сцену врага, визуально напоминающую красного робожука. Корневой узел — RigidBody2D, внутри которого размещены AnimationPlayer, два AudioStreamPlayer2D, VisibleOnScreenEnabler2D, Sprite2D, три CollisionShape2D, два RayCast2D и CPUParticles2D. В коде реализована обработка столкновений: при контакте со стеной враг меняет направление движения; при попадании снаряда игрока запускается анимация гибели, отключаются коллайдеры, активируются эффекты затенения и частиц, после чего враг уничтожается:
Также рассмотрим сцену монетки — Coin.tscn. При подборе монетки игроком срабатывает сигнал _on_body_entered, после чего запускается анимация taken. Она, в свою очередь, активирует испускание частиц и воспроизведение звукового эффекта:
В игре также присутствует сцена фона — горы, которые медленно перемещаются. Для создания иллюзии глубины и удаленности используется узел ParallaxBackground, обеспечивающий параллакс-эффект:
И последняя, но не по значению, сцена — stage.tscn (сцена уровня). На ней размещены: тайлы через TileMapLayer, монетки, узел Node2D с движущимися платформами, игрок, враги, фон с удаленными горами (параллакс) и AudioStreamPlayer, воспроизводящий фоновый звук:
2д игра на годот.Phisics-Based Platformer 2D 2.Конец
В этом туториале по Godot Physics-Based Platformer 2D мы разобрали все сцены проекта. В следующих материалах мы восстановим их пошагово. Спасибо за внимание!
