Похожие презентации:
Переходим на Godot 4: от изменений к мини-игре «Поймай звезду»
1.
GODOT 4.0 / ПЕРВОЕ ЗАНЯТИЕПереходим
на Godot 4
Что изменилось и как сделать небольшую 2D-игру
Сначала разберёмся в изменениях, затем соберём игру
2.
01 / ВСПОМИНАЕМЧто уже знакомо?
• Сцены помогают собирать части игры.
• Узлы отвечают за отдельные объекты и их поведение.
• Скрипты добавляют объектам логику.
• В Godot 4 всё это осталось. Меняться будут некоторые названия и способы
работы.
Вспомните пример игры, которую вы делали в Godot 3.5.
02
3.
03 / ГЛАВНОЕ ОТЛИЧИЕНекоторые узлы получили новые имена
• KinematicBody2D → CharacterBody2D
• Sprite → Sprite2D
• Position2D → Marker2D
• Area2D и StaticBody2D по-прежнему есть.
• Если не помните название, найдите узел через поиск в меню добавления.
04
4.
04 / СРАВНИВАЕМ КОДДвижение персонажа: Godot 3.5
extends KinematicBody2D
var velocity = Vector2.ZERO
func _physics_process(delta):
velocity = Vector2(100, 0)
velocity = move_and_slide(velocity)
В Godot 3.5 скорость передавали в move_and_slide().
05
5.
04 / СРАВНИВАЕМ КОДА теперь — Godot 4.0
extends CharacterBody2D
var speed = 250.0
func _physics_process(_delta):
velocity = Vector2(1, 0) * speed
move_and_slide()
В CharacterBody2D свойство velocity уже есть, а move_and_slide() вызывается без аргумента.
06
6.
05 / GDSCRIPTТипы помогают читать код
var score: int = 0
var speed: float = 250.0
@export var jump_power: float = 350.0
func add_point() -> void:
score += 1
int — целое число, float — число с дробной частью. @export позволяет менять значение в Inspector.
07
7.
06 / КОРОТКАЯ ПАУЗАПроверим себя
• Как теперь называется KinematicBody2D?
• Для чего нужен Inspector?
• Как в Godot 4 вызывается move_and_slide()?
• Что позволяет сделать @export?
Попробуйте ответить своими словами.
08
8.
ПРАКТИКА / 2DМини-игра:
«Поймай звезду»
Управляем персонажем, собираем звезду и считаем очки.
Сначала добьёмся, чтобы всё работало. Украшения — потом.
9.
ПРАКТИКА1. Создаём сцену игрока
• Создайте новый 2D-проект.
• Добавьте CharacterBody2D и назовите его Player.
• Добавьте Sprite2D и CollisionShape2D.
• Назначьте CollisionShape2D форму CircleShape2D.
• Сохраните сцену как Player.tscn.
Для картинки можно использовать icon.svg из нового проекта.
10
10.
ПРАКТИКА2. Добавляем управление
extends CharacterBody2D
@export var speed: float = 250.0
func _physics_process(_delta: float) -> void:
var direction := Input.get_vector("ui_left", "ui_right","ui_up","ui_down")
velocity = direction * speed
move_and_slide()
11
11.
ПРАКТИКА3. Создаём звезду
• Создайте отдельную сцену с корневым узлом Area2D.
• Добавьте Sprite2D и CollisionShape2D.
• Для CollisionShape2D задайте CircleShape2D.
• Сохраните сцену как Star.tscn.
• Добавьте Star в главную сцену.
12
12.
ПРАКТИКА4. Добавляем счёт
• В главную сцену добавьте Label и назовите его ScoreLabel.
• Установите текст Label в 0.
• Подключите сигнал body_entered у Star.
• При касании игроком увеличивайте счёт на 1.
• После сбора переместите звезду в другое место.
13
Программирование