En esta sección, añadirás sonidos de pisadas al personaje jugable para añadir realismo a su movimiento por el nivel. Usarás señales de sonido para crear distintos sonidos en función del tipo de superficie por la que camine el jugador.
Crearás materiales físicos para representar los tipos de superficies. Por ejemplo, caminar sobre metal debería sonar distinto a caminar sobre piedra. También crearás un recurso de datos personalizado que contendrá la información sobre la superficie y el sonido. El uso de un recurso de datos facilita añadir más tipos de superficies y sonidos en el futuro sin tener que modificar el código del blueprint.
Por último, crearás una función en la biblioteca de funciones de Blueprint que ya tienes en el juego: BPL_FPGame. Esta función, a su vez, realizará una llamada a una función dentro del recurso de datos que devolverá el efecto de sonido correcto según el tipo de superficie detectada.
Antes de empezar
Asegúrate de que comprendes los temas tratados en las secciones anteriores de los tutoriales Pase artístico para un juego de aventura de rompecabezas y Unreal Engine para nuevos usuarios:
Creación de recursos de señal de sonido y atenuación del sonido.
Aspectos básicos de los blueprints, incluida la creación de variables y funciones, y la creación y conexión de nodos.
Trabajarás con los siguientes recursos en el proyecto de muestra y el paquete de contenido:
Onda de sonido S_Metal-1
Onda de sonido S_Metal-2
Onda de sonido S_Metal-3
Onda de sonido S_Stone-1
Onda de sonido S_Stone-2
Onda de sonido S_Stone-3
Onda de sonido S_DefaultStep-1
Onda de sonido S_DefaultStep-2
Onda de sonido S_DefaultStep-3
Biblioteca de funciones de Blueprint BPL_FPGame
Blueprint BP_AdventureCharacter
Blueprint de animación ABP_Unarmed
Cómo crear señales de sonido con sonidos de pisadas
Primero, crearás dos señales de sonido, una para las pisadas sobre metal y otra para las pisadas sobre piedra.
Para crear una señal de sonido, sigue estos pasos:
Ve al explorador de contenido y navega hasta AdventureGame > Artist > Audio.
Haz clic con el botón derecho del ratón en la carpeta Audio, selecciona Nueva carpeta y nómbrala Pisadas.
En la carpeta Footsteps, haz clic derecho y ve a Audio > Señal de sonido. Dale el nombre SC_Footsteps_Metal y abre el archivo. Este recurso ya tiene un nodo de salida que reproduce el sonido en función de los nodos a los que está conectado.
Haz clic derecho en cualquier parte del grafo y añade un nodo Wave Player.
Selecciona el nodo Wave Player y usa el panel de la izquierda para cambiar la onda de sonido a S_Metal-1.
Añade dos nodos Wave Player más y repite los pasos para que seleccionen los archivos de onda de sonido S_Metal-2 y S_Metal-3 que importaste en Configura tu proyecto e importa contenido.
Haz clic con el botón derecho en el grafo y añade un nodo Random. Haz clic en Añadir entrada en el nodo Random una vez para añadir una tercera entrada.
Conecta cada nodo Wave Player a un pin en el nodo Random.
Conecta el nodo Random al nodo Output.
Guarda la señal de sonido.
A continuación, crea dos recursos de señal de sonido: uno que aleatorice los sonidos de las pisadas sobre piedra y otro para los sonidos predeterminados de las pisadas.
Crea un recurso de señal de sonido y dale el nombre SC_Footsteps_Stone.
Para los nodos Wave Player, utiliza S_Stone-1, S_Stone-2 y Recursos de audio S_Stone-3 que importaste en Configura tu proyecto e importa contenido.
Crea un recurso de señal de sonido nombrado SC_Footsteps_Default.
Para los nodos Wave Player, usa los recursos de audio S_Default-1, S_Default-2y S_Default-3.
Cómo crear materiales físicos
Una vez creadas las señales de sonido, vas a crear dos materiales físicos para representar cada tipo de superficie. Posteriormente, asociarás los sonidos de las pisadas con estos materiales físicos.
Un material físico se utiliza para definir la respuesta de un objeto físico cuando interactúa dinámicamente con el mundo. Este material también se puede usar para identificar distintos tipos de superficies durante el juego.
Por ejemplo, en este tutorial, crearás materiales físicos nombrados PM_Metal y PM_Stone para representar superficies de metal y piedra. A continuación, comprobarás sobre qué superficie camina el jugador y reproducirás una señal de sonido en función de esa información.
Para crear un material físico, sigue estos pasos:
Ve al explorador de contenido y navega hasta la carpeta AdventureGame > Artist > Materials.
En la carpeta Materials, haz clic derecho, dirígete a Physics y selecciona Material físico.
En la ventana Elegir la clase de material físico, selecciona PhysicalMaterial y haz clic en Seleccionar.
Dale a este recurso el nombre PM_Metal.
Crea más material físico llamado PM_Stone.
Un material físico es un recurso de datos que puedes usar para cambiar varios ajustes de una superficie, como la fricción. En el caso de estos materiales físicos, no es necesario editar las propiedades en los propios recursos. Lo que harás será asignar estos recursos a diferentes materiales para cambiar sus tipos de superficie individuales.
Asigna sonidos de pisadas con una clase de blueprint de recursos de datos.
A continuación, crearás una nueva clase de recurso de datos de blueprint para que contenga los sonidos de las pisadas y crearás una función que devuelva el sonido correcto de las pisadas en función del material físico asignado al material de un objeto.
Si quieres configurar un recurso de datos de blueprint para controlar el sonido de las pisadas, sigue estos pasos:
En el explorador de contenido, ve a la carpeta AdventureGame > Artist > Audio > Footsteps.
Haz clic con el botón derecho y crea una clase de blueprint.
En la ventana Elegir clase padre, amplía el desplegable Todas las clases y luego busca y selecciona PrimaryDataAsset.
Dale a este recurso el nombre BP_DA_FootSteps y ábrelo.
En el panel My Blueprint, añade una nueva variable:
Dale el nombre FootStepSounds.
Selecciónala. En el panel Detalles:
Cambia el tipo de variable a Material físico (referencia de objeto).
Cambia el contenedor a Mapa.
Cambia el tipo de valor del mapa a Señal de sonido (referencia de objeto).
El tipo de variable por defecto es booleano. Como no puedes asignar booleanos, el contenedor Mapa no estará disponible si no cambias primero el tipo de variable.
Añade otra variable:
Dale el nombre DefaultFootSteps.
Cambia su tipo a señal de sonido.
Dado que solo hay una señal de sonido para el sonido de pisada predeterminado y que solo se reproduce si no hay ningún material físico asignado al material del objeto, puedes cambiar el tipo de contenedor a una sola variable.
Una variable de mapa es una lista de pares de datos que vincula un tipo de recurso con otro. La variable FootStepSounds asigna cada material físico a su señal de sonido correspondiente.
Para configurar FootStepSounds y vincular materiales con sonidos, sigue estos pasos:
Compila el blueprint para que puedas editar los valores por defecto de tus variables.
Selecciona la variable FootStepSounds. En el panel Detalles, en Valor predeterminado, añade un nuevo elemento.
En el campo Material físico, selecciona el recurso PM_Stone.
En el campo Señal de sonido, selecciona el recurso SC_Footsteps_Footsteps_Default.
Repite los pasos anteriores para añadir un elemento con PM_Metal y SC_Footsteps_Metal asignados.
Selecciona la variable FootStepSounds. En el panel Detalles, en Valor predeterminado, añade SC_Footsteps_Default.
Para compilar la lógica del blueprint, sigue estos pasos:
En el panel My Blueprint, añade una nueva función nombrada fnGetFootStepSounds. Se abre en una pestaña nueva con su propio grafo.
Selecciona la función. Desde el panel Detalles, haz lo siguiente:
Añade una nueva entrada llamada PhysicalMaterial con el tipo Material físico.
Añade una nueva salida llamada SoundCue con el tipo definido como Señal de sonido.
En el grafo, desconecta el cable entre el nodo de entrada de la función (fnGetFootStepSounds) y el nodo Return.
En el grafo de la función, arrastra la variable FootStepSounds al grafo y selecciona Get.
Arrastra el pin del nodo Foot Step Sounds y añade un nodo Find.
En el nodo Find, conecta el segundo pin de entrada al pin Physical Material del nodo fnGetFootStepSounds. Este es el parámetro para la entrada que añadiste antes.
Desde el nodo fnGetFootStepSounds, arrastra su pin de ejecución y crea un nuevo nodo Branch. Conecta el pin Condition al pin de salida inferior (rojo) del nodo Find.
En el nodo Branch, conecta el pin True al nodo Return.
Desde el nodo Return, arrastra el pin Sound Cue y conéctalo al pin de salida superior (azul) del nodo Find.
En el nodo Branch, arrastra el pin False y añade otro nodo nodo Return.
En el nuevo nodo Return, arrastra desde el pin Sound Cue y añade un nodo Get Default Foot Steps.
Compila y guarda el blueprint.
Esta función comprueba si se encuentra un material físico (entrada de la función) en el mapa de FootStepSounds. Si se encuentra el material físico, se devuelve la señal de sonido asociada a dicho material como variable de salida de la función.
Si no se encuentra ningún material físico, se devuelve la señal de sonido DefautlFootSteps.
Cómo establecer sonidos de pisada predeterminados
A continuación, crearás un recurso de datos para gestionar los valores usados por tu blueprint. Este recurso actúa como una capa de configuración, permitiéndote añadir, eliminar o actualizar los materiales físicos y las señales de sonido sin tener que modificar ni recompilar el blueprint. Sigue estos pasos:
En el explorador de contenido, ve a la carpeta AdventureGame > Artist > Audio > Footsteps.
Haz clic derecho y ve a Varios > Recurso de datos. (Selecciona el tipo de recurso de datos con un icono circular).
Selecciona la clase de datos BP_DA_FootSteps como instancia del recurso de datos.
Dale a este recurso el nombre DA_FootSteps y ábrelo.
En Default Foot Steps, selecciona SC_Footsteps_Default.
Amplía Foot Step Sounds y verifica que la lista contenga los dos elementos de mapa FootStepSounds.
Guarda el recurso de datos.
Cómo construir una función para reproducir sonidos de pisadas
A continuación, crearás una función en la biblioteca de funciones para reproducir el sonido de las pisadas. Cualquier clase de blueprint de tu proyecto puede usar funciones de una biblioteca de funciones de blueprint.
Para crear y configurar una nueva función, sigue estos pasos:
En el explorador de contenido, dirígete a AdventureGame > Designer > Blueprints > Core y abre la biblioteca de funciones del blueprint BPL_FPGame.
En el panel My Blueprint, añade una nueva función y dale el nombre fnBPLPlayFootStepSound.
Selecciona la nueva función y, en el panel Detalles, añade una nueva entrada llamada PlayerReference de tipo Pawn.
Para configurar un trazado de línea entre el jugador y el suelo, sigue estos pasos:
Arrastra desde el pin de ejecución del nodo fnBPLPlayFootStepSound y añade un nodo Line Trace By Channel.
Desde el nodo Line Trace By Channel, arrastra el pin Start y añade un nodo Get Actor Location.
En la lista de acciones del nodo, recuerda desactivar Sensible al contexto si tienes problemas para encontrar un nodo.
Arrastra el pin Target del nodo Get Actor Location y añade un nodo Get Player Reference.
Arrastra el pin de salida del nodo Get Player Reference y añade un nodo Make Array.
Conecta el pin de salida de matriz del nodo Make Array al pin Actors to Ignore del nodo Line Trace By Channel.
En el nodo Get Actor Location, arrastra el pin Return Value y añade un nodo Subtract.
Conecta el pin de salida del nodo Subtract al pin End del nodo Line Trace By Channel.
En el nodo Subtract, fija el valor Z en 500.
Esto traza una línea de 500 unidades hacia abajo que parta de la posición del jugador e ignore al personaje jugable. En la siguiente parte, asignarás el sonido de pisada correcto en función del tipo de superficie que indique el trazo de línea.
Sigue estos pasos para usar el recurso de datos que creaste antes para asignar el sonido de la pisada derecha:
Desde el nodo Line Trace By Channel, arrastra el pin Out Hit y selecciona Break Hit Results.
Crea una variable local, llámala FootStepsAsset y establece que su tipo sea BP_DA_FootSteps (referencia de objeto). Establece su valor predeterminado en DA_FootSteps.
Arrastra la variable FootStepsAsset al grafo de eventos y selecciona Get FootStepAsset.
Arrastra desde el nodo FootStepsAsset y busca y selecciona fnGetFootStepSounds.
Conecta el pin de ejecución del nodo LineTraceByChannel con el nodo FnGetFootStepSounds. Amplía el nodo Break Hit Results y conecta el pin Phys Matal pin Physical Material del nodo FnGetFootStepSounds.
Arrastra desde el nodo FnGetFootStepSounds y, a continuación, busca y selecciona Reproducir sonido en la ubicación.
Conecta el pin Sound del nodo PlaySoundAtLocation al pin Sound Cue del nodo FnGetFootStepSounds.
Arrastra el pin Location del nodo PlaySoundAtLocation y selecciona Get Actor Location. Arrastra su pin Target y añade un nodo Get Player Reference.
Guarda y compila la función.
Usa la función del recurso de datos fnGetFootStepSounds para pasar un material físico y obtener una señal de sonido para reproducir.
Cómo actualizar el blueprint de animación con sonidos de pisadas
El siguiente paso es modificar el blueprint de animación de tu personaje jugable para que llame a la función FnBPLPlayFootStepSound cada vez que un pie del personaje toque el suelo.
La mayoría de los personajes de Manny, como el que se usa en este proyecto, utilizan animaciones que incluyen notificaciones por defecto. Este tipo de notificaciones (también conocidas como notificaciones de animacióno simplemente notificaciones) son una forma de crear eventos repetibles sincronizados con las secuencias de animación. Estos eventos pueden ser sonidos (como pisadas en animaciones de caminar o correr), generación de partículas y mucho más.
Aunque se pueden añadir notificaciones a una secuencia de animación, la mayoría de las animaciones de locomoción que vienen con las plantillas de Unreal Engine incluyen notificaciones de animación predeterminadas que coinciden cuando los pies del personaje tocan el suelo (FootPlant).
Sigue estos pasos para ver las notificaciones de animación predeterminadas:
En el explorador de contenido, abre el blueprint de animación que usa tu personaje jugable. Para BP_AdventureCharacter en el proyecto de muestra, ve a Content > Characters > Mannequins > Anims > Unarmed y abre ABP_Unarmed.
En la esquina superior derecha, haz clic en el botón de animación (el icono verde de una persona corriendo). Esto abre una de las animaciones del blueprint en una nueva pestaña de Unreal Editor.
Para cambiar la animación que se está reproduciendo, haz clic en los tres puntos junto al botón Animación y selecciona cualquier animación de caminar o correr. Por ejemplo, MF_Unarmed_Jog_Fwd.
Consejo: también puedes abrir la animación del movimiento directamente desde el explorador de contenido.
En el cronograma, verás las notificaciones de pisada:
Puedes añadir nuevas notificaciones y cambiar las existentes para diseñar tu propio sistema donde quieras que se ejecute una cadena de eventos. En este tutorial, usarás las notificaciones predeterminadas que vienen con las animaciones del personaje. Se denominan AN_FootPlant_Right y AN_FootPlant_Left.
Para añadir las notificaciones de la animación al blueprint y reproducir los sonidos de las pisadas, sigue estos pasos:
Vuelve a ABP_Unarmed.
Haz clic derecho en el grafo de eventos y añade un nodo AnimNotify_AN_FootPlant_Left.
Arrastra desde el pin del nodo Notify y, a continuación, busca y selecciona FnBPLPlayFootStepSound.
Añade un nodo AnimNotify_AN_FootPlant_Right y conéctalo al pin de ejecución de entrada del nodo FnBPLPlayFootStepSound.
Desde el nodo FnBPLPlayFootStepSound, arrastra el pin Player Reference y añade un nodo Get Player Pawn.
Compila y guarda el blueprint de animación.
Esto reproducirá el sonido de la pisada cada vez que se active la notificación de pisada en el blueprint de animación.
Si tu personaje usa blueprints de animación adicionales, también tendrás que añadir el código a esos blueprints de animación.
Como actualizar el blueprint del personaje jugable para reproducir sonidos de pisadas
A continuación, modificarás el blueprint del jugador y añadirás lógica para reproducir el sonido cuando el jugador aterrice en el suelo, como cuando aterriza tras una caída o cuando salta. Como has creado la función FnBPLPlayFootStepSound en la biblioteca de funciones de blueprint, puedes reutilizar la función en el blueprint del personaje jugable.
Para modificar el blueprint del jugador, sigue estos pasos:
Abre el explorador de contenido y ve a la carpeta AdventureGame > Designer > Blueprints > Characters.
Abre el blueprint BP_AdventureCharacter y ve a la pestaña EventGraph.
Haz clic derecho en un área vacía del grafo y añade un nodo Event On Landed.
Arrastra el pin de ejecución del nodo EventOnLanded y busca y selecciona FnBPLPlayFootStepSound.
Desde el nodo FnBPLPla FootStepSound, arrastra el pin Player Reference y añade un nodo Self.
Compila y guarda el blueprint.
Cómo asignar un material físico a suelos
A continuación, asignarás un material físico a múltiples superficies. Sigue estos pasos:
Selecciona una superficie en el nivel, como un objeto Suelo.
En el panel Detalles, en la sección Colisión, cambia Anulación de material físico a uno de los materiales físicos que has creado antes.
Repite estos pasos para añadir ambos tipos de materiales físicos a algunos de los suelos de tu nivel.
También puedes añadir un material físico a una instancia de material siguiendo estos pasos:
Abre la instancia de material y dirígete al panel Detalles.
Baja hasta la sección General, haz clic en el desplegable Material físico y selecciona el material físico que desees.
Guarda tu instancia de material.
Cómo probar tus pisadas
Juega y camina sobre las superficies con materiales físicos y salta para escuchar los sonidos correctos de las pisadas.
Si la superficie tiene asignado un material físico, oirás el sonido de las pisadas correspondientes. Si no se encuentra ningún material físico, oirás el sonido predeterminado de las pisadas.
Siguiente
En el siguiente módulo, aprenderás a crear un efecto visual de fuego y a aplicarlo a tus trampas de fuego usando el sistema de efectos visuales Niagara.