Засчитай трубу
Часть раздела Проекты путешествия по Godot на Coddy. Урок 27 из 36.
Каждая пройденная труба приносит одно очко. У трубы есть дочерний узел 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каждой трубы к функции, которая увеличивает счёт на единицу и показывает его.
Нажми «Играть» и пролетай через просвет: на счёте появится 1. Затем нажми «Проверить».
Попробуйте сами
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