Ворог та Ігровий цикл - Практична
Передумови
Скачайте дані спрайти ворогів та використовуйте результат/основу минулої практичної як основу цієї.
Основне завдання - ціль
Приклад результату виконання основного завдання.
EnemyCrab
EnemyCrab - структура та реалізація.
Компонент EnemyCrab:
Створіть клас EnemyCrab, що наслідує CharacterBody2D, EnemyCrab має мати механіку патрулювання та взаємодії з гравцем. EnemyCrab має діяти як противник гравця у грі, який здатний завдати шкоди гравцю при контакті або бути розчавленим, якщо гравець стрибне на нього зверху.
Ієрархія вузлів для EnemyCrab.tscn має бути такою: EnemyCrab (CharacterBody2D) як кореневий вузол; Area2D для детекції гравця; CollisionShape2D як колайдер; AnimatedSprite2D для анімацій Walk, Attack та Death.
Основні вимоги:
- Реалізувати ініціалізацію для отримання посилань на
Area2DтаAnimatedSprite2D, підключити подіюBodyEnteredобласті та зв'язати сигнал завершення анімації з обробником станів, а також отримати посилання наGameManagerз кореня дерева сцен - Реалізувати базову логіку
EnemyCrab(рух/патруль) - Реалізувати логіку детекції гравця (
Player): запуск послідовності смерті (анімація Death та підкидання гравця) при приземленні гравця зверху, або завдання шкоди (анімація Attack та викликGameManager.DamagePlayer) при бічному контакті - Реалізувати очищення (cleanup) після смерті
EnemyCrab: вимкнення фізичної обробки, моніторингу області та всіхCollisionShape2D
Death та Win Mechanics
Death та Win Mechanics - структура та реалізація.
HP, DeathMenu, VictoryMenu та HUD:
Health System:
Додайте властивість HP до Player. Уся обробка шкоди має бути централізована в GameManager: метод GameManager.DamagePlayer(int damage, Player player) має зменшувати HP, перевіряти умову смерті (HP ≤ 0), запускати DeathMenu та оновлювати HUD.
- Реалізувати поле HP у
Playerяк експортовану властивість - Централізувати логіку шкоди в
GameManager— зменшення HP, перевірка смерті та оновлення HUD - Забезпечити відображення актуальних HP в HUD через текстовий елемент
DeathMenu та VictoryMenu:
Створіть сцени меню, що наслідують CanvasLayer, з ProcessMode = Always. Меню повинні містити кнопку повернення в головне меню, яка вимикає паузу гри, змінює сцену на MainMenu.
- Створити сцени смерті та перемоги з оверлеєм та центрованою кнопкою повернення в меню
- Встановити
ProcessMode = Alwaysдля гарантії відгуку UI - Реалізувати коректне очищення при виході зі сцени за допомогою
QueueFree()
WinArea та HUD:
Розмістіть Area2D у кінці рівня як тригер перемоги. При вході гравця (Player) має відбуватися перехід до VictoryMenu. HUD має містити Label, що оновлюється коли HP гравця змінюється.
- Використати
Area2Dбез колізій як зону тригера для умови перемоги - Перевіряти, чи є тіло, що увійшло, гравцем (
Player), перед активацією перемоги - Створити посилання на
HP Labelта оновлювати його текст через метод зGameManager
Взаємодія Систем
Як EnemyCrab, GameManager, HUD, DeathMenu та VictoryMenu працюють разом.
Потік взаємодії компонентів:
- 1
Бічне зіткнення :EnemyCrabвизначає позицію гравця (якщо координати центру гравця нище центруEnemyCrab) => викликає HurtPlayer => повідомляєGameManager.DamagePlayer=> зменшується HP гравця => оновлюється HUD. - 2
Зіткнення зверху :EnemyCrabвизначає позицію гравця (якщо координати центру гравця вище центруEnemyCrab) => викликаєтьсяStartDying=> відтворюється анімація Death => гравець отримує імпульс вгору =>Cleanup()вимикає фізику та колізіїEnemyCrab. - 3
Game Over : Коли HP <= 0,GameManagerактивуєDeathMenu(CanvasLayer) з темним оверлеєм. Натискання кнопки повертає гравця вMainMenuчерез вимкнення паузи таQueueFree(). - 4
Перемога : Гравець входить уWinArea2D=> перевірка типу тіла => негайна зміна сцени наVictoryMenu.tscn. - 5
Шлях повернення : Обидва меню працюють в режиміProcessMode = Always=> натискання кнопки =>GetTree().Paused = false=>ChangeSceneToFile("MainMenu.tscn")=>QueueFree(). - 6
Save/Load : Стан гравця та ворогів зберігається черезISavable. Смерть або перемога ініціюють повне перезавантаження сцени з головного меню, що забезпечує чистоту даних.
Файли на які потрібно звернути увагу/Рекомендована структура проєкту.
Рекомендована структура проєкту та важливі файли.
Рекомендована дерево-структура проєкту:
- .
- Assets
- Code
- Libraries
- RedGodot.cs
- RedMath.cs
- icon.svg
- project.godot
- Scenes
- Enemies
- Crab
- EnemyCrab.cs
- EnemyCrab.tscn
- InteractionArea
- InteractionArea.cs
- InteractionArea.tscn
- Levels
- Level1.tscn
- WinArea2D.cs
- Lever
- Lever.cs
- Lever.tscn
- Managers
- GameManager
- GameManager.cs
- InteractionManager
- InteractionManager.cs
- InteractionManager.tscn
- SaveManager
- ISavable.cs
- SaveManager.cs
- Menus
- DeathMenu
- DeathMenu.cs
- DeathMenu.tscn
- HUDMenu
- HUDMenu.cs
- HUDMenu.tscn
- LevelMenu
- LevelMenu.cs
- LevelMenu.tscn
- MainMenu
- MainMenu.cs
- MainMenu.tscn
- PauseMenu
- PauseMenu.cs
- PauseMenu.tscn
- VictoryMenu
- VictoryMenu.cs
- VictoryMenu.tscn
- MovingPlatform
- MovingPlatform.cs
- MovingPlatform.tscn
- Player
- Player.cs
- Player.tscn
- Portal
- Portal.cs
- Portal.tscn
- ToggleButton
- ToggleButton.cs
- ToggleButton.tscn
build info
- compiler
- 2.0.5.1 · 4054EF9BF6C4510A
- built
- 2026-11-08 14:31:25 UTC
WebUniverse