Menu
CoddyTech
flag Ru iconРусскийdown icon

Счёт в «Арканоиде»

Часть раздела Проекты путешествия по Godot на Coddy. Урок 7 из 33.

Каждый кирпич приносит 10 очков. Мяч знает, когда разбивает кирпич, а main.gd ведёт счёт. Их связывает сигнал. Мяч отправляет сигнал за каждый разбитый кирпич, а главный скрипт его прослушивает.

В ball.gd объяви сигнал в начале файла и отправляй его рядом с smash():

signal brick_broken

# в _on_body_entered, после body.smash():
brick_broken.emit()

В main.gd подключи сигнал в _ready и добавь очки в вызываемой им функции:

func _on_brick_broken():
	score += 10
	$HUD/Score.text = "Score: %d" % score

Метка находится в CanvasLayer под названием HUD. Также задай ей значение Score: 0 в _ready, иначе она останется пустой до первого кирпича.

challenge icon

Задание

Средне
  1. В ball.gd добавь signal brick_broken и отправляй этот сигнал, когда кирпич разбивается.
  2. В main.gd добавь var score = 0, подключи $Ball.brick_broken к функции, которая прибавляет 10 и отображает Score: 10, Score: 20, ... в $HUD/Score.
  3. При запуске игры отображай Score: 0.

Попробуйте сами

extends Node2D

const BRICK = preload("res://brick.tscn")
const COLORS = [Color(1, 0.42, 0.42), Color(1, 0.78, 0.34), Color(0.49, 0.95, 0.75), Color(0.369, 0.635, 1), Color(0.75, 0.82, 0.95)]

func _ready():
	for row in 5:
		for column in 8:
			var brick = BRICK.instantiate()
			brick.position = Vector2(68 + column * 72, 60 + row * 26)
			brick.color = COLORS[row]
			add_child(brick)
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

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

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