Засчитай трубу
Часть раздела Проекты путешествия по Godot на Coddy. Урок 24 из 33.
Каждая пройденная труба приносит одно очко. У трубы есть дочерний узел Area2D под названием Gap — тонкая полоска за проёмом. Персонаж касается её только после того, как пролетит через проём, и тогда начисляется очко.
В pipe.gd подключи сигнал дочернего узла через $Gap и вызови scored:
$Gap.body_entered.connect(_on_gap_body_entered)
func _on_gap_body_entered(body):
scored.emit()В main.gd подключи сигнал scored каждой новой трубы. Увеличь score на единицу и покажи его в $HUD/Score. str(score) преобразует число в текст. В начале покажи 0.
Задание
Средне- В
pipe.gdдобавьsignal scored. Подключи$Gap.body_enteredи вызывайscored, когда тело входит в проём. - В
main.gdдобавьvar score = 0и при запуске отобрази0в$HUD/Score. - Подключи
scoredкаждой трубы к функции, которая увеличивает счёт на единицу и отображает новый результат.
Попробуйте сами
extends Area2D
signal hit
const SPEED = 160
func _ready():
body_entered.connect(_on_body_entered)
func _physics_process(delta):
position.x -= SPEED * delta
if position.x < -60:
queue_free()
func _on_body_entered(body):
hit.emit()
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Проекты
3Проект: Летающий птенец
Гравитация для птенцаВзмах крыльямиПотренируйтесь самостоятельно: Песочница Godot