¿Cómo implementar el game over?

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By LuisaFda96

Tengo un proyecto que es por el mismo estilo de mario bros pero no he encontrado la forma de hacer que muera cuando caiga o choque con algo y que vuelva a revivir en el mismo lugar.

Muchas gracias.

:bust_in_silhouette: Reply From: N00b

Deberías probar por tu cuenta y intentarlo. Es bastante fácil de hacer.
Lo que no puedes pretender es que te escriban el código aquí.

Intenta algo y si no te funciona, pega el código por aqui y te diran los que esta bien y lo que no.

:bust_in_silhouette: Reply From: estebanmolca

Vos podes programar que hacer con el personaje en cada momento, no hay una función especifica para que el personaje “muera”. Yo intentaría algo como marcar zonas de posición en el mapa y cuando sobrepasa una zona, guardar los datos en variables, un array o un diccionario con los puntos, salud, vida, o lo que quieras que sea persistente.
Entonces cuando el personaje muere simplemente moverlo a la posición de la ultima zona guardada.
Depende como tengas configurado tu árbol de escena pero para moverlo seria algo así (suponiendo que tenes un nodo con nombre player, y un nodo con nombre zona al principio del mapa , que son hijos del nodo en donde se ejecuta el script)

extends Node2D

#guardamos la posicion del nodo zona en una variable Vector2:
onready var  pos_ultima = $zona.position 
var salud = 100
    
func _process(delta):
    #si sobrepasamos la zona:
	if $player.position.x >= $zona.position.x:
		#guardamos la posicion:
		pos_ultima=$zona.position
		#movemos la zona para adelante al lugar que queramos del mapa
		$zona.position = Vector2(1500,500)
		#...y tambien guardamos la vida, puntos, etc
		 
    #si el personaje muere:    
	if salud <= 0:
		#lo movemos a la ultima posicion guardada
		$player.position=pos_ultima
		#...y actualizamos la vida, puntos, etc con los ultimos guardados.

Para que el personaje pierda vida podes hacer que reste salud cuando toca un enemigo o un objeto comprobando la diferencia de posicion entre el jugador y ese objeto. hay algunas funciones que te pueden ayudar como float distance_to( Vector2 to ) Ejemplo:

if $player.position.distance_to($enemy.position) < 1: salud -= 30

Por caida es similar, solo que tenes que medir el tiempo y la altura que esta cayendo y restarle vida segun, o simplemente si cae fuera del mapa:

  if $player.position.y > get_viewport_rect().size.y: salud = 0

Por ultimo te recomiendo que estudies todo sobre vectores, se hace todo mas fácil cuando los entendes , siempre esta la documentación del editor y la parte del manual titulada matemáticas esta muy buena no dejes de leerla.