Elije tu propia aventura 1

Elije tu propia aventura

Elije tu propia aventura 2

Elije tu propia aventura

En este juego iremos pulsando en areas de la pantalla que cargarán nuevas escenas.

Esta forma de jugar es similar a lo que hace un usuario interactuando con los menús de un videojuego y por tanto sería más apropiado resolver el juego utilizando una escena de tipo User Interface.

Pasos de resolución

Definimos la estructura de la primera escena

Desarrollamos la primera escena del juego, en la que el protagonista estará flotando por el espacio sideral.

.
└── Node2D
└── Sprite2D (Hay que asignarle una textura)
├── Area2D (Hay que asignarle un CollisionShape2D)
│ └── CollisionShape2D (Hay que definirle un area de colisión)
└── Area2D2
└── CollisionShape2D

Añadimos la lógica para detectar la pulsación sobre las áreas

Cuando hagamos click sobre alguna de las dos Area2D, debemos mostrar una traza. Luego, en lugar de una traza, redireccionaremos a otra escena.

Para detectar las pulsaciones, Area2D emitirá una señal que vamos a recoger desde un script.

Pulsamos con el botón derecho sobre el nodo Node2D → Añadir Script …

1. Seleccionamos Area2D en el arbo de nodos → En el panel inspector navegamos a la pestaña Nodo → En la subpestaña señales hay una señal llamada input_event → la arrastramos al código fuente del nodo Node2D.

2. Completamos el código fuente que se ha añadido al script con el siguiente código:

func _on_area_2d_input_event(viewport: Node, event: InputEvent, shape_idx: int) -> void:
	if event is InputEventMouseButton and event.pressed:
		print("¡Nave pulsada!")

3. Ejecutamos el juego para ver que todo ha ido bien.

4. Repetimos los pasos para detectar la pulsación sobre la bola del mundo.

5. Realizamos el resto de escenas. De momento, en todos los casos, al pulsar sobre el area interactiva debería mostrarse una traza.

6. Añadimos el código necesario para que en lugar de una traza se cargue una nueva escena:

get_tree().change_scene_to_file("res://scenes/spacehip/spaceship.tscn")