Hay muchísimas formas de trabajar con una cámara en los juegos y varían mucho en función del tipo de juego que estés creando. En el caso de Unreal Engine, las cámaras suelen estar compuestas de un actor con un componente de brazo elástico y un componente de cámara que renderiza la vista. Si quieres consultar la configuración básica de cámara, echa un vistazo a Using Cameras in Unreal Engine (Cómo utilizar cámaras en Unreal Engine).
En este documento, los desarrolladores van explicar cómo decidieron implementar la cámara para Parrot en concreto y los ajustes que merece la pena mencionar.
Subsistema de cámaras de Parrot
Para empezar, se identificó qué mapas podrían necesitar unos ajustes de cámara específicos para ese mundo.
Los desarrolladores crearon UParrotCameraSubsystem que comparte el ciclo de vida del mundo e inicializa la cámara con estos ajustes en BeginPlay. Los ajustes específicos de mapa se almacenan en AParrotWorldSettings, que es útil para analizar cualquier tipo de datos por mapa. En el caso de la cámara, serían la clase de cámara deseada, el modo de movimiento y el límite superior e inferior de Z cuando ya no queremos que la cámara siga al jugador. La clase en sí es opcional y no proporcionar ninguna es una ruta válida. Esto se hace en el menú principal.
Si quieres entender el motivo por el que elegir un subsistema, consulta la documentación Subsistemas en Parrot.
Los ajustes del mundo se pueden encontrar en el panel Configuración del mundo del editor.
Cámara de Parrot
AParrotCamera es donde sucede la mayor parte de la lógica. Cuando el subsistema inicializa la cámara, se proporcionan: el jugador al que seguir, el modo de movimiento y los límites desde la configuración del mundo.
La cámara tiene tres posibles modos de movimiento: None (ninguno), Fixed (fijo) y Follow (seguir).
None (ninguno) hace lo que cabe esperar por su nombre en inglés. La cámara no hace nada.
El modo de movimiento Fixed es muy sencillo. Cuando el jugador entra en un volumen delimitado, el subsistema de cámara asigna una ubicación fija a la cámara, y esta interpola hasta ella. Entonces, el jugador puede moverse libremente hasta que el modo de movimiento se actualiza.
El modo de movimiento Follow es más complejo y se entiende mejor si se echa un vistazo a Contenido/Blueprints/Camera/BP_PlatformerCamera para tener una referencia visual. AParrotCamera incluye una caja de activación por movimiento y una malla de bloqueo como subobjetos por defecto. Esto implica que cada instancia de AParrotCamera los añade automáticamente en su jerarquía. Ambos están alineados con el campo de visión de la cámara, el brazo elástico y la perspectiva para conseguir el efecto deseado. Ambos componentes están vinculados al actor de cámara y lo siguen por el mundo.
La malla de bloqueo impide que el jugador se pueda mover hacia atrás al colisionar con el jugador en el mundo.
Cuando el jugador se solape con la caja de activación por movimiento, la cámara intentará interpolar hasta el valor X del jugador a una velocidad determinada. La velocidad también se multiplica por la distancia del jugador pasada la extensión máxima a la izquierda del volumen de activación. Así, cuando más se haya adentrado el jugador en el volumen, más deprisa se tendrá que mover la cámara para alcanzarlo.
El resultado es que el jugador puede moverse con libertad por la parte izquierda de la pantalla hasta la malla de bloqueo, pero la cámara acompañará el movimiento el jugador cuando supere el umbral. Esto proporciona un efecto estupendo mientras el jugador se mueve por el eje X del mundo.
Otro aspecto a tener en cuenta del modo de movimiento Follow es que se registra la última ubicación conocida del jugador. Si la coordenada Z del jugador supera los límites del mundo o el personaje jugable es destruido, la cámara interpola hasta la última posición conocida del jugador. Esto evita cualquier comportamiento brusco de la cámara causado por el movimiento o el estado del jugador.
Por último, el componente de cámara en sí mismo en BP_PlatformerCamera tiene unos cuantos ajustes que merece la pena mencionar. El ajuste Projection Mode está establecido en Perspective con un FOV de 90 grados y una relación de aspecto de 1.77, lo que es el estándar de la imagen de rango dinámico alto. En Camera Options, acotamos la relación de aspecto de forma que la cámara siempre se vea de forma correcta, con independencia de la resolución de ejecución de la aplicación.