Menu
CoddyTech

Bata nos canos

Parte da seção Projetos do Journey de Godot da Coddy. Lição 26 de 36.

Atingir um cano ou o chão deve encerrar o jogo. Ambos levam a uma função em main.gd:

func _on_crash():
	$HUD/Message.text = "Game Over"
	get_tree().paused = true

Um cano. O cano é uma Area2D com duas formas, as metades superior e inferior. O vão não tem forma. Em pipe.gd, conecte body_entered e emita um sinal hit. main.gd conecta o hit de cada novo cano antes de adicioná-lo.

O chão. Seu topo fica em y = 318. A borda do personagem voador fica a 12 pixels do meio, então ele toca o chão quando position.y passa de 306. Então, flyer.gd emite crashed.

O personagem voador, os canos e o temporizador são Pausable, então a pausa congela todos eles.

challenge icon

Desafio

Difícil

Encerre o jogo ao colidir.

  1. Em pipe.gd, adicione signal hit, conecte body_entered em _ready e emita hit quando um corpo entrar.
  2. Em flyer.gd, adicione signal crashed e emita-o quando position.y for maior que 306.
  3. Em main.gd, conecte hit de cada cano e crashed do personagem a _on_crash, que exibe Game Over e pausa o jogo.

Pressione “Jogar” e caia: Game Over será exibido. Em seguida, pressione “Verificar”.

Experimente você mesmo

extends Node2D

const PIPE = preload("res://pipe.tscn")

func _ready():
	$PipeTimer.timeout.connect(_on_pipe_timer_timeout)

func _on_pipe_timer_timeout():
	var pipe = PIPE.instantiate()
	pipe.position = Vector2(700, randf_range(100, 250))
	$Pipes.add_child(pipe)

Todas as lições de Projetos

Pratique por conta própria: Playground de Godot