Menu
CoddyTech

Засчитай трубу

Часть раздела Проекты путешествия по 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.

challenge icon

Задание

Средне

Получай очко за каждую пройденную трубу.

  1. В pipe.gd добавь signal scored, подключи $Gap.body_entered и вызывай scored, когда тело входит в просвет.
  2. В main.gd добавь var score = 0 и при запуске показывай 0 в $HUD/Score.
  3. Подключи сигнал 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()

Все уроки раздела Проекты

Потренируйтесь самостоятельно: Песочница Godot