Aprende a hacer tus propios efectos de iluminación para alegrar tus juegos.
La iluminación y las sombras dinámicas pueden elevar la calidad visual y la experiencia de juego de tus juegos de Godot. Agregan profundidad, atmósfera y realismo, haciendo que su mundo de juego sea más inmersivo y atractivo.
Con las poderosas funciones de Godot como CanvasModulate y PointLight2D, crear y personalizar luces y sombras dinámicas es una tarea fácil.
Configuración del juego de Godot
Antes de sumergirse en la iluminación dinámica, configure un juego 2D básico en el motor de juego de Godot. Cree una nueva escena y agregue un PersonajeCuerpo2D para el jugador
El código utilizado en este artículo está disponible en este repositorio GitHub y es gratis para su uso bajo la licencia MIT.
Dentro de PersonajeCuerpo2D, Agrega un ColisiónForma2D de forma rectangular y Sprite2D para representar el carácter del jugador. Además, crea algunas plataformas usando Cuerpo estático2D nodos.
Ahora, implemente el movimiento del jugador y la colisión con los límites de la pantalla usando GDScript:
extends CharacterBody2D
var speed = 200
func _physics_process(delta):
var velocity = Vector2()if Input.is_action_pressed('ui_right'):
velocity.x += 1if Input.is_action_pressed('ui_left'):
velocity.x -= 1if Input.is_action_pressed('ui_down'):
velocity.y += 1if Input.is_action_pressed('ui_up'):
velocity.y -= 1
velocity = velocity.normalized() * speed
move_and_collide(velocity * delta)
Con este código, el jugador puede moverse hacia la izquierda, hacia la derecha, hacia arriba y hacia abajo mientras está restringido dentro de los límites de la pantalla.
Oscurecer el resto de la escena
Para lograr el efecto de iluminación dinámica, debe oscurecer el resto de la escena excepto las áreas iluminadas por las fuentes de luz. Puedes hacer esto usando Godot LienzoModular característica.
extends Node2D
const DARKNESS = 0.7
func _ready():
var canvas_modulate = CanvasModulate.new()
canvas_modulate.color = Color(0, 0, 0, DARKNESS)
add_child(canvas_modulate)
Adjunte este script a un nuevo Nodo2D añadido en la raíz de la escena. El LienzoModular node aplicará una superposición negra semitransparente, oscureciendo toda la escena excepto las áreas iluminadas por luces.
Crear una variable constante OSCURIDAD, que determina la intensidad de la oscuridad aplicada a la escena. Al ajustar el valor de OSCURIDAD, puede controlar qué tan oscura se vuelve la escena cuando no está iluminada por luces. Un valor más alto dará como resultado una escena más oscura, mientras que un valor más bajo hará que la escena sea menos oscura.
Proyectar luz sombra
Para proyectar sombras, debe configurar LightOccluder2D nodos en obstáculos que deberían bloquear la luz. Por ejemplo, si tiene paredes, plataformas u otros objetos que deban proyectar sombras, agregue un LightOccluder2D a cada uno
Crear un nuevo LightOccluder2D nodo y ajuste su forma para que coincida con la forma del obstáculo en su juego. También puede ajustar las propiedades del oclusor como polígonos y segmentos para afinar el comportamiento de proyección de sombras.
Agregar luces omnidireccionales
Ahora, agrega un PuntoLuz2D nodo con una textura para representar su fuente de luz. Las luces puntuales emiten luz en todas las direcciones y crean un efecto de iluminación realista.
extends PointLight2D
var light_color = Color(1, 1, 0.8)
func _ready():
energy = 2.5
color = light_color
Puede personalizar las propiedades para controlar el rango y el color de la luz emitida por el PuntoLuz2D.
También puede crear o importar una textura de luz personalizada para definir la forma y apariencia de su fuente de luz. Puede ser un círculo simple o una forma más compleja, dependiendo de la atmósfera que quieras crear.
Para aplicar la textura a la PuntoLuz2D nodo, siga estos pasos:
- Selecciona el PuntoLuz2D nodo en el árbol de escena.
- En el panel Inspector, localice la propiedad Textura bajo el Textura sección.
- Haga clic en el cuadro de textura vacío y seleccione la textura ligera que desee en el explorador de archivos.
Ahora, su fuente de luz emitirá luz con la forma y el color definidos, agregando un toque visualmente atractivo a sus luces y sombras dinámicas.
Incluyendo funciones adicionales
Además de la configuración básica de luces y sombras dinámicas, puede introducir varias características adicionales para elevar aún más el atractivo visual y la experiencia de juego. Aquí hay algunas ideas para considerar:
Animaciones de luz
Da vida a tus fuentes de luz agregándoles animaciones. Por ejemplo, puede crear luces parpadeantes para antorchas o velas, simular el movimiento de una fogata o incluso agregar un efecto pulsante a orbes mágicos.
Ciclo Día-Noche
Implemente un ciclo dinámico de día y noche que cambie gradualmente la intensidad y el color de las luces a medida que avanza el tiempo del juego. Esta característica puede mejorar la inmersión y crear diferentes estados de ánimo según la hora del día.
Desvanecimiento de la luz
Cree transiciones suaves para los cambios de intensidad de la luz para evitar cambios abruptos que puedan romper la inmersión. Al atenuar gradualmente las luces hacia adentro y hacia afuera, puede lograr un efecto más natural y agradable a la vista.
Sombras dinámicas
En lugar de usar sombras estáticas, considere agregar sombras dinámicas a objetos o personajes en movimiento. Puede hacer esto usando fuentes de luz adicionales que siguen el movimiento de los personajes, dando la ilusión de actualizaciones de sombras en tiempo real.
Efectos de sonido sin derechos de autor
Los efectos de sonido juegan un papel crucial en hacer que el mundo de tu juego se sienta vivo y dinámico. Considere incorporar efectos de sonido sin copyright para complementar su iluminación y sombras dinámicas.
Mejores prácticas para iluminación y sombras dinámicas
Si bien la iluminación y las sombras dinámicas pueden mejorar en gran medida su juego, la implementación incorrecta puede afectar negativamente el rendimiento y la calidad visual. Estas son algunas de las mejores prácticas a tener en cuenta:
Optimizar fuentes de luz
Limite el número de fuentes de luz activas al mínimo necesario para el efecto visual deseado. Las luces excesivas pueden afectar significativamente el rendimiento, especialmente en dispositivos de gama baja.
Use horneado ligero
Para escenas u objetos estáticos, considere hornear la información de iluminación para mejorar el rendimiento. El horneado de luz precalcula los datos de iluminación, lo que reduce la necesidad de cálculos en tiempo real durante el juego.
Opte por oclusores simples
Al configurar LightOccluder2D nodos, opte por formas simples siempre que sea posible. Los oclusores complejos con muchos vértices pueden provocar problemas de rendimiento. Use polígonos simples o segmentos de línea para los oclusores siempre que sea posible.
Eliminación y estratificación
Utiliza el sistema de capas y visibilidad de Godot para garantizar que las luces y las sombras solo se calculen para las áreas visibles. Quitar luces y sombras fuera de la pantalla puede mejorar significativamente el rendimiento.
Al seguir estas prácticas recomendadas e implementar cuidadosamente características adicionales, puede crear luces y sombras dinámicas sorprendentes y cautivadoras que elevan la calidad general de tu juego de plataformas.
Hacer que los juegos de Godot sean más atractivos con luces y sombras dinámicas
La iluminación y las sombras dinámicas dan vida a tu mundo de juego. Crean un entorno más inmersivo y atmosférico, atrayendo a los jugadores a una experiencia de juego más profunda. La interacción de luces y sombras puede invocar emociones, establecer el tono y mejorar la narración visual de tu juego.
Ya sea que se trate de una mazmorra oscura y misteriosa o de una noche serena a la luz de la luna, la iluminación dinámica enriquece el juego y deja una impresión duradera en los jugadores.