Menu
CoddyTech

Choca contra las tuberías

Parte de la sección Proyectos del Journey de Godot de Coddy. Lección 26 de 36.

Chocar contra una tubería o el suelo debería terminar la partida. Ambos casos llevan a una función de main.gd:

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

Una tubería. La tubería es un Area2D con dos formas, las mitades superior e inferior. El hueco no tiene ninguna forma. En pipe.gd, conecta body_entered y emite una señal hit. main.gd conecta la señal hit de cada tubería nueva antes de añadirla.

El suelo. Su parte superior está en y = 318. El borde del volador está a 12 píxeles de su centro, así que toca el suelo cuando position.y supera 306. Después, flyer.gd emite crashed.

El volador, las tuberías y el temporizador se pueden pausar, así que la pausa los detiene a todos.

challenge icon

Desafío

Difícil

Termina la partida cuando haya un choque.

  1. En pipe.gd, añade signal hit, conecta body_entered en _ready y emite hit cuando entre un cuerpo.
  2. En flyer.gd, añade signal crashed y emítela cuando position.y sea mayor que 306.
  3. En main.gd, conecta el hit de cada tubería y el crashed del volador a _on_crash, que muestra Game Over y pausa la partida.

Pulsa «Jugar» y déjate caer: aparece Game Over. Después, pulsa «Comprobar».

Pruébalo tú mismo

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 las lecciones de Proyectos

Practica por tu cuenta: Playground de Godot