Compartir tecnología

79. Enfriamiento y consumo de habilidades de creación de RPG UE5

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

En este artículo, continuamos optimizando las habilidades y ahora las habilidades activas agregadas al personaje se pueden sincronizar con la interfaz de usuario. En este artículo, mejoraremos el consumo de habilidades (liberar habilidades para reducir maná) y el mecanismo de enfriamiento.
Podemos ver que en el valor predeterminado de la clase de habilidad, puedes configurar su enfriamiento y GE consumido.
Insertar descripción de la imagen aquí
Por lo tanto, a continuación usaremos GE para configurar el enfriamiento y el consumo de habilidades.

Consumo de habilidades agregado GE

Primero creamos un plano y la clase principal seleccionada es Efecto de juego
Insertar descripción de la imagen aquí
Nómbrelo GE_Cost_FireBolt, que significa el costo de la bola de fuego.
Insertar descripción de la imagen aquí
Para consumir nuestra duración, elija Instantáneo.
Insertar descripción de la imagen aquí
Luego agregamos modificadores para reducir la cantidad de maná del personaje, reduciéndola en 20 cada vez que se usa una habilidad.
Insertar descripción de la imagen aquí
Se crea un GE de consumo simple y lo aplicamos a las habilidades
Insertar descripción de la imagen aquí
A continuación, tenemos que llamar al nodo Comprometer habilidad en la habilidad. Este nodo deducirá el maná requerido para la habilidad. Si hay un tiempo de recuperación, la habilidad entrará en el tiempo de recuperación.
Insertar descripción de la imagen aquí
Commit Ability es un nodo unificado para deducir maná y enfriamiento. Por supuesto, también puedes separarlo y tener nodos separados para deducir consumo y enfriamiento.
Insertar descripción de la imagen aquí

Ejecutar efecto de prueba
Insertar descripción de la imagen aquí

Analizar la capacidad de compromiso

Primero, determinamos si la habilidad se activará si no hay suficiente maná. Imprimimos datos antes de procesar el consumo.
Insertar descripción de la imagen aquí
Si la cantidad de maná es suficiente, se puede imprimir con éxito, pero si la cantidad de maná no puede soportar la liberación de la habilidad, no se imprimirá, lo que demuestra que si no hay suficientes recursos, la habilidad no se ingresará y no se juzga por la capacidad de confirmación, que solo se utiliza para el nodo de recursos.
Insertar descripción de la imagen aquí
Miramos el código fuente y el código que llama es K2_CommitAbility
Insertar descripción de la imagen aquí
Se llama a CommitAbility internamente para implementar la lógica, luego se verifica si el consumo es suficiente para proporcionar las habilidades y se llama a la función para deducir los recursos.
Insertar descripción de la imagen aquí
CommExecute es una función de deducción de recursos, que internamente llama a la deducción y enfriamiento de recursos.
Insertar descripción de la imagen aquí
Echa un vistazo a Aplicar enfriamiento, que tomará el nivel de habilidad y aplicará el GE al ASC.
Insertar descripción de la imagen aquí
Los recursos de la aplicación se consumen de la misma forma y también se obtienen niveles de habilidad.
Insertar descripción de la imagen aquí

Establece niveles de habilidad para consumir diferentes cantidades de maná.

Ahora sabemos que usar el consumo de habilidad puede modificar la cantidad de maná que consume según el nivel de habilidad. Podemos usar la tabla para definir diferentes niveles y consumo de maná.
Entonces creamos una nueva tabla de curvas para establecer el consumo de maná de las habilidades en diferentes niveles.
Cree una tabla de curvas, seleccione Constante como tipo y establezca el consumo de maná en cada nivel en un valor fijo.
Insertar descripción de la imagen aquí
Con nombre CT_Cost
Insertar descripción de la imagen aquí
Agrega internamente el consumo de maná de la habilidad desde el nivel 1 al nivel 10 de Fireball.
Insertar descripción de la imagen aquí
Luego use la tabla de curvas aquí en GE, seleccione la fila creada y establezca el valor en -1
Insertar descripción de la imagen aquí
Luego modifique el nivel de habilidad inicial en el código para probar.
Insertar descripción de la imagen aquí
Después de liberar una habilidad, la cantidad de maná es tres veces mayor que antes, lo que demuestra que no hay ningún problema con la configuración.
Insertar descripción de la imagen aquí

Se agregó tiempo de reutilización de habilidades.

El principio del enfriamiento de habilidades es aplicar una etiqueta de enfriamiento a ASC durante la fase de enfriamiento. Esta habilidad no se puede usar nuevamente mientras exista la etiqueta de enfriamiento.
Entonces, queremos implementar el enfriamiento, primero creamos una etiqueta para el enfriamiento.

FGameplayTag Cooldown_Fire_FireBolt; //火球术冷却标签
  • 1

Luego regístrese en el administrador de etiquetas.

	GameplayTags.Cooldown_Fire_FireBolt = UGameplayTagsManager::Get()
		.AddNativeGameplayTag(
			FName("Cooldown.Fire.FireBolt"),
			FString("火球术冷却标签")
			);
  • 1
  • 2
  • 3
  • 4
  • 5

Crea una bola de fuego para enfriar GE
Insertar descripción de la imagen aquí
Modificar GE a una duración urgente
Insertar descripción de la imagen aquí
Como puede ver aquí, el tiempo de enfriamiento se puede configurar usando los diversos métodos que usamos para modificar el valor antes. Aquí usamos el más simple, configurándolo directamente en 1s.
Insertar descripción de la imagen aquí
No necesitamos modificar el contenido relacionado con los personajes aquí. Solo necesitamos agregar una etiqueta de enfriamiento al ASC cuando este GE entre en vigencia. Agregamos un componente de efecto de juego de etiquetas de destino.
Insertar descripción de la imagen aquí
Agregue una etiqueta de enfriamiento al Actor a través de este componente y agregue la etiqueta de enfriamiento que creamos.
Insertar descripción de la imagen aquí
Luego aplica el tiempo de reutilización en la habilidad.
Insertar descripción de la imagen aquí
Al realizar la prueba, descubrimos que solo podemos liberar la habilidad una vez por segundo.

Generalmente solo generamos una instancia de una habilidad de personaje para un personaje. Para evitar que el cliente desactive la habilidad antes de que se active, finalizaremos la habilidad cuando finalice la animación del montaje de la habilidad o finalice la combinación. cancelado a la fuerza, y cuando finalice la habilidad, para poder seguir reproduciendo el montaje.
También necesitamos activar la habilidad instanciada de Reactivación para que cuando se active nuevamente, desactive la activación anterior.
Insertar descripción de la imagen aquí

Seguimiento: ahora tenemos el consumo y se puede mostrar correctamente en la interfaz de usuario, pero el enfriamiento aún no se ha implementado. Después de usar la habilidad, el progreso del enfriamiento de la habilidad no se puede mostrar en la interfaz de usuario de la habilidad. los cambios en la habilidad de enfriamiento en el futuro y mostrarlos encima de la interfaz de usuario.