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.0Un 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.
Desafío
IntermedioCongela el juego por un momento cuando reciba un impacto.
- Después del destello en
hit(), estableceEngine.time_scaleen0.05. - Espera 0.1 segundos reales con un temporizador que ignore la escala de tiempo, como se muestra arriba.
- Vuelve a establecer
Engine.time_scaleen1.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
1Interpolaciones
Tu primera interpolaciónInterpola cualquier propiedadDesvanecerSalida suaveUna tras otraAl mismo tiempoUna moneda que salta4Destellos y retroalimentación
Destello al recibir un golpePausa al recibir un golpeCompresión y estiramientoNúmeros flotantesPractica por tu cuenta: Playground de Godot