Para los juegos que requieran exploración y búsqueda.
Las ilustraciones.
https://www.mediafire.com/file/22zhsvnde7500ed/Ilustraciones_de_niebla_de_guerra.zip/file
Comenzamos con un bloque de oscuridad:
"Area2D" como nodo raíz, lo nombramos: "Baldosa"
"Sprite" como hijo de "Baldosa"
"CollisionShape" como hijo de "Baladosa"
"Sprite" como hijo de "Baldosa", lo nombramos: "Borde".
Seleccionamos el nodo "Sprite", añadimos su textura, dentro de "Animation", "Hframes" ponemos "3".
En "CollisionShape" le añadimos una forma de colisión rectangular de 15 x 15, un tamaño ligeramente mas pequeño que la imagen.
Seleccionamos el nodo "Borde", añadimos su textura, dentro de "Animation", "Hframes" ponemos "2", en "Frame" ponemos "1".
En otra escena:
"Node2D" como nodo raíz, lo nombramos: "Textura", le añadimos un script
"Sprite" como hijo de "Textura", lo nombramos: "Damero"
"Node2D" como hijo de "Textura", lo nombramos: "Baldosas"
"Area2D" como hijo de "Textura", lo nombramos: "Personaje"
"CollisionShape" como hijo de "Personaje"
"Camera2D" como hijo de "Textura".
Añadimos un script al nodo raíz.
Añadimos la textura al nodo "Damero".
Saltamos hasta el nodo "Personaje", para conectar la señal "area_entered" a la función "_area_dentro" y la señal "area_exited" a la funcion "_area_fuera".
En "CollisionShape2D" establecemos forma y tamaño de la colisión, esta colisión es la que barre los bloques de oscuridad.
Activamos el nodo "Camera2D" marcando la casilla de "Current".
Ahora el suelo:
"StaticBody" como nodo raíz, lo nombramos: "Piso"
"Viewport" como hijo de "Piso"
enlazamos la anterior escena como hijo de "Viewport"
"MeshInstance" como hijo de "Piso"
"CollisionShape" como hijo de "Piso".
Seleccionamos el "Viewport", establecemos un tamaño de 600 x 600, son las mismas dimensiones que tiene la textura del nodo "Damero" de la anterior escena.
Vamos al nodo "MeshInstace" para colocar una malla de un plano de 60 x 60.
Le creamos un nuevo material.
Hacemos el recurso local.
Dentro de "Albedo", en "Texture" creamos un "Nuevo ViewportTexture".
Se despliega una ventana en la que seleccionamos el nodo "Viewport".
En "CollisionShape" establecemos forma, tamaño y posición de la colisión.
Pasamos a una nueva escena para colocar:
"Area" como nodo raíz, lo nombramos: "Lampara", le añadimos su script
"CollisionShape" como hijo de "Lampara".
Conectamos la señal "body_entered" a la función "_edificio_dentro" y la señal "body_exited" a la función "_edificio_fuera".
Ahora cambiamos la capa y máscara de colisión al Bit 1.
En "CollisionShape" establecemos forma y tamaño de la colisión, esta debe tener un ancho y una profundad alineadas al "CollisionShape2D" del nodo "Textura".
Todos los objetos 3D que desees que sean descubiertos deben cumplir con requisitos:
El nodo raíz debe ir oculto.
El nodo "MeshInstance" debe tener un material.
La máscara y capa de colisión de deben estar en el Bit 0 y 1.
Enlazamos en la escena principal.
¡Listo!
https://www.mediafire.com/file/snd3t06qy3cjffl/Niebla_de_guerra.zip/file
Nota:
No estoy usando luces y sombras, son texturas y materiales.
Es solo una inspiración, se pueden lograr mejores nieblas.
Hay una niebla de guerra similar pero en 2D, en vez de usar muchos bloques de "Area2D", usan el nodo "TleMap", la complejidad en el código para lograrlo es bastante, o al menos a mi se me dificulto entender la manera en que le das forma al área que quita la niebla.
https://github.com/godotengine/godot-demo-projects/tree/2.1/2d/fog_of_war
Las ilustraciones.
https://www.mediafire.com/file/22zhsvnde7500ed/Ilustraciones_de_niebla_de_guerra.zip/file
Comenzamos con un bloque de oscuridad:
"Area2D" como nodo raíz, lo nombramos: "Baldosa"
"Sprite" como hijo de "Baldosa"
"CollisionShape" como hijo de "Baladosa"
"Sprite" como hijo de "Baldosa", lo nombramos: "Borde".
Seleccionamos el nodo "Sprite", añadimos su textura, dentro de "Animation", "Hframes" ponemos "3".
En "CollisionShape" le añadimos una forma de colisión rectangular de 15 x 15, un tamaño ligeramente mas pequeño que la imagen.
Seleccionamos el nodo "Borde", añadimos su textura, dentro de "Animation", "Hframes" ponemos "2", en "Frame" ponemos "1".
En otra escena:
"Node2D" como nodo raíz, lo nombramos: "Textura", le añadimos un script
"Sprite" como hijo de "Textura", lo nombramos: "Damero"
"Node2D" como hijo de "Textura", lo nombramos: "Baldosas"
"Area2D" como hijo de "Textura", lo nombramos: "Personaje"
"CollisionShape" como hijo de "Personaje"
"Camera2D" como hijo de "Textura".
Añadimos un script al nodo raíz.
Añadimos la textura al nodo "Damero".
Saltamos hasta el nodo "Personaje", para conectar la señal "area_entered" a la función "_area_dentro" y la señal "area_exited" a la funcion "_area_fuera".
En "CollisionShape2D" establecemos forma y tamaño de la colisión, esta colisión es la que barre los bloques de oscuridad.
Activamos el nodo "Camera2D" marcando la casilla de "Current".
Ahora el suelo:
"StaticBody" como nodo raíz, lo nombramos: "Piso"
"Viewport" como hijo de "Piso"
enlazamos la anterior escena como hijo de "Viewport"
"MeshInstance" como hijo de "Piso"
"CollisionShape" como hijo de "Piso".
Seleccionamos el "Viewport", establecemos un tamaño de 600 x 600, son las mismas dimensiones que tiene la textura del nodo "Damero" de la anterior escena.
Vamos al nodo "MeshInstace" para colocar una malla de un plano de 60 x 60.
Le creamos un nuevo material.
Hacemos el recurso local.
Dentro de "Albedo", en "Texture" creamos un "Nuevo ViewportTexture".
Se despliega una ventana en la que seleccionamos el nodo "Viewport".
En "CollisionShape" establecemos forma, tamaño y posición de la colisión.
Pasamos a una nueva escena para colocar:
"Area" como nodo raíz, lo nombramos: "Lampara", le añadimos su script
"CollisionShape" como hijo de "Lampara".
Conectamos la señal "body_entered" a la función "_edificio_dentro" y la señal "body_exited" a la función "_edificio_fuera".
Ahora cambiamos la capa y máscara de colisión al Bit 1.
En "CollisionShape" establecemos forma y tamaño de la colisión, esta debe tener un ancho y una profundad alineadas al "CollisionShape2D" del nodo "Textura".
Todos los objetos 3D que desees que sean descubiertos deben cumplir con requisitos:
El nodo raíz debe ir oculto.
El nodo "MeshInstance" debe tener un material.
La máscara y capa de colisión de deben estar en el Bit 0 y 1.
Enlazamos en la escena principal.
¡Listo!
https://www.mediafire.com/file/snd3t06qy3cjffl/Niebla_de_guerra.zip/file
Nota:
No estoy usando luces y sombras, son texturas y materiales.
Es solo una inspiración, se pueden lograr mejores nieblas.
Hay una niebla de guerra similar pero en 2D, en vez de usar muchos bloques de "Area2D", usan el nodo "TleMap", la complejidad en el código para lograrlo es bastante, o al menos a mi se me dificulto entender la manera en que le das forma al área que quita la niebla.
https://github.com/godotengine/godot-demo-projects/tree/2.1/2d/fog_of_war
Comentarios
Publicar un comentario