Menu
CoddyTech

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

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

Каждый кирпич стоит 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

Задание

Средне

Получай 10 очков за каждый кирпич.

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

Нажми «Играть» и разбей кирпич: метка покажет Score: 10. Затем нажми «Проверить».

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

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)

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

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