Menu
CoddyTech

Pausa al recibir un golpe

Parte de la sección Sensación de juego del Journey de Godot de Coddy. Lección 17 de 23.

Un congelamiento al recibir un impacto detiene el juego durante una fracción de segundo cuando se produce un impacto. Hace que el impacto se sienta más contundente.

Engine.time_scale es la velocidad del reloj del juego. En 1, el juego funciona normalmente. En 0.05, el movimiento, las interpolaciones y los temporizadores funcionan veinte veces más despacio.

Engine.time_scale = 0.05
await get_tree().create_timer(0.1, true, false, true).timeout
Engine.time_scale = 1.0

Un temporizador normal funciona según el reloj ralentizado, así que 0.1 segundos durarían dos segundos reales. El último true en create_timer hace que el temporizador ignore time_scale y cuente segundos reales. Los dos valores anteriores son los valores predeterminados habituales.

Vuelve a poner siempre time_scale en 1. Afecta a todo el juego y permanece así hasta que tu código lo cambie.

challenge icon

Desafío

Intermedio

Congela el juego por un momento cuando reciba un impacto.

  1. Después del destello en hit(), establece Engine.time_scale en 0.05.
  2. Espera 0.1 segundos reales con un temporizador que ignore la escala de tiempo, como se muestra arriba.
  3. Vuelve a establecer Engine.time_scale en 1.0.

Pulsa «Jugar» y pulsa E: el dron se detiene por un momento. Después, pulsa «Comprobar».

Pruébalo tú mismo

extends Node2D

func hit():
	modulate = Color(4, 4, 4)
	var tween = create_tween()
	tween.tween_property(self, "modulate", Color(1, 1, 1), 0.3)

Todas las lecciones de Sensación de juego

Practica por tu cuenta: Playground de Godot