Aprende a controlar la ventana gráfica de tu juego con acciones de desplazamiento, acercamiento y escalado.

Un sistema de cámara bien diseñado puede ayudar a sumergir a los jugadores en el mundo del juego y dar una mejor sensación de ubicación. La cámara actúa como los ojos del jugador, permitiéndole navegar e interactuar con el mundo del juego.

Crear un sistema de cámara en Godot es simple pero poderoso. Puede configurar fácilmente la cámara para seguir al jugador, restringir sus movimientos al área del juego e incluso agregar zoom dinámico y escalado en función de los eventos del juego.

Crear un juego simple

Antes de comenzar, debe crear un mundo de juego en 2D y un personaje en su Motor de juego Godot que la cámara puede seguir.

Cree una nueva escena 2D y agregue un PersonajeCuerpo2D nodo. Esto servirá como nuestro personaje jugador. Dentro del CharacterBody2D, agregue un ColisiónForma2D y establecer su forma para RectánguloForma2D para proporcionar la presencia física del jugador en el mundo.

instagram viewer

El código utilizado en este artículo está disponible en este repositorio GitHub y es gratis para su uso bajo la licencia MIT.

Además, dentro del CharacterBody2D, agregue un Sprite2D nodo y asígnele la imagen de sprite de su jugador. Cree un nuevo script adjunto al nodo CharacterBody2D y agregue el siguiente código:

extends CharacterBody2D

var speed = 200

func _physics_process(delta):
var velocity = Vector2()

if Input.is_action_pressed('ui_right'):
velocity.x += 1

if Input.is_action_pressed('ui_left'):
velocity.x -= 1

if Input.is_action_pressed('ui_down'):
velocity.y += 1

if Input.is_action_pressed('ui_up'):
velocity.y -= 1

velocity = velocity.normalized() * speed
move_and_collide(velocity * delta)

Con este código, el personaje del jugador ahora puede moverse en las cuatro direcciones y chocará con las plataformas.

Implementación de un sistema de cámara de seguimiento

El siguiente paso es crear una cámara que siga los movimientos del jugador. Agrega un Cámara2D nodo como un hijo de su PersonajeCuerpo2D nodo. Esto asegura que la cámara siempre seguirá al jugador. Para suavizar el movimiento, habilite la propiedad de suavizado de posición del Cámara2D nodo.

$Camera2D.enabled = true
$Camera2D.position_smoothing_enabled = true

Implementación de límites y restricciones de cámara

A menudo es importante restringir la vista del jugador al área de juego. Sin embargo, si no maneja esto correctamente, la cámara puede revelar áreas que están fuera del alcance del juego. Estos pueden incluir espacios o áreas incompletas.

Godot proporciona una manera fácil de establecer límites de cámara y restringir sus movimientos dentro del área de juego.

En el Cámara2D propiedades del nodo, hay cuatro variables: limit_left, límite_superior, límite_derecho, y limit_bottom. Estos determinan los límites de la cámara. Puede establecer estos valores de acuerdo con el tamaño del mundo de su juego.

$Camera2D.limit_left = 0
$Camera2D.limit_top = 0
$Camera2D.limit_right = your_game_area_width
$Camera2D.limit_bottom = your_game_area_height

Reemplazar ancho_del_área_de_tu_juego y altura_de_tu_área_de_juego con el ancho y alto de tu mundo de juego. Este script restringe efectivamente la cámara dentro del área deseada, brindando una experiencia de juego limpia y enfocada para el jugador.

Manejo del zoom y la escala de la cámara

El zoom y la escala dinámicos pueden ser fundamentales para crear momentos impactantes en el juego. Por ejemplo, es posible que quieras acercarte al personaje del jugador durante una acción poderosa o alejarte para revelar un gran enemigo o una vista panorámica del mundo del juego.

Crédito de la imagen: Xbox Game Studios/orithegame.com

Godot facilita el zoom y la escala con el zoom propiedad de la Cámara2D nodo. Esta propiedad es un Vector2, siendo (1, 1) el nivel de zoom predeterminado. Los valores más altos se alejarán, haciendo que los objetos vistos parezcan más pequeños, mientras que los valores más bajos se acercarán, haciendo que los objetos parezcan más grandes.

Para acercar, puedes usar:

$Camera2D.zoom = Vector2(0.7, 0.7)

Y para restablecer el zoom, use:

$Camera2D.zoom = Vector2(1, 1)

Los valores que pasa a Vector2() determinan el nivel de zoom en los ejes X e Y. Un valor de zoom de (0,7, 0,7) significa que la cámara se acercará, mientras que un valor de (1,5, 1,5) alejará la cámara.

Por lo general, debe mantener el mismo valor para ambos ejes para mantener la relación de aspecto, pero puede experimentar con diferentes valores para lograr efectos únicos.

Incluyendo características adicionales

Al crear un sistema de cámara para su juego, existen numerosas características adicionales que puede incorporar para mejorar la experiencia.

Cámara temblando

Un efecto común usado en muchos juegos, especialmente juegos de plataformas, es el movimiento de la cámara. Esto generalmente se usa para transmitir impacto o intensidad durante ciertos momentos del juego, como una explosión o el poderoso ataque de un personaje.

Puedes agregar fácilmente esta función en Godot creando un agitar() función. Puede especificar la duración y la intensidad del efecto de sacudida según el evento específico del juego.

Los sonidos pueden mejorar en gran medida la sensación de lugar y movimiento en un juego. Esto puede ser tan simple como tocar un swoosh efecto de sonido cuando la cámara se mueve o gira rápidamente, o tan complejo como modificar el volumen o el tono de los sonidos ambientales o las pistas de música según la ubicación de la cámara o el nivel de zoom.

Por ejemplo, es posible que desee bajar el volumen de una canción cuando la cámara se aleja para dar una sensación de distancia.

Iluminación dinámica

También puede vincular efectos de iluminación dinámicos a su cámara. A medida que su cámara se mueve por el mundo del juego, puede cambiar las condiciones de iluminación para reflejar los nuevos entornos o resaltar áreas u objetos específicos.

Esto podría incluir cosas como oscurecer gradualmente la escena a medida que la cámara se adentra en una cueva, o resaltar un objeto clave con un foco.

Efectos de transición de cámara

Puede crear varios efectos de transición al cambiar de cámara. Esto podría ser un corte simple donde la vista salta instantáneamente de una cámara a otra o un desvanecimiento donde la vista cambia gradualmente de una cámara a otra.

Puede utilizar transiciones más complejas, como un barrido, un deslizamiento o un iris, con codificación y animación adicionales.

Mejores prácticas para agregar un sistema de cámara

Al agregar un sistema de cámara a su juego, debe tener en cuenta varias prácticas recomendadas para garantizar la mejor experiencia de juego posible.

Evite movimientos de cámara bruscos

Los cambios repentinos en la perspectiva de la cámara pueden desorientar a los jugadores y pueden interrumpir el juego. Siempre apunte a transiciones de cámara suaves para mantener la inmersión.

Limitar el movimiento de la cámara

Si bien un movimiento de la cámara puede agregar impacto a ciertos eventos, demasiado puede hacer que el juego sea difícil de seguir e incómodo de jugar. Utilice este efecto con moderación y moderación.

Pruebe diferentes niveles de zoom

Diferentes juegos y diferentes situaciones dentro de un juego pueden requerir diferentes niveles de zoom. Realice pruebas exhaustivas para encontrar el nivel de zoom más apropiado para cada situación.

Considere cuidadosamente los límites de la cámara

Los límites de la cámara deben establecerse cuidadosamente para que se ajusten al diseño de sus niveles. No quieres que el jugador vea fuera del mundo del juego o se pierda elementos importantes fuera de la pantalla.

Priorizar la experiencia del jugador

El objetivo principal del sistema de cámara siempre debe ser mejorar la experiencia del jugador. Ya sea para brindar la mejor vista de la acción, enfatizar los momentos clave o ayudar al jugador a navegar por el entorno, la cámara siempre debe contribuir a una mejor experiencia de juego.

Haciendo que los juegos de Godot sean más atractivos con el sistema de cámara

Un sistema de cámara bien implementado puede mejorar la experiencia general del juego. Puede enfatizar la acción, ayudar en la narración y proporcionar una experiencia más inmersiva.

Al controlar lo que ve el jugador y cuándo lo ve, puede guiar su viaje a través del mundo del juego y hacer que el juego sea más dinámico y atractivo.