Compartilhamento de tecnologia

79. Recarga e consumo da habilidade de criação de RPG UE5

2024-07-12

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

Neste artigo, continuamos a otimizar as habilidades e agora as habilidades ativas adicionadas ao personagem podem ser sincronizadas com a IU. Neste artigo iremos melhorar o consumo de habilidades (liberar habilidades para reduzir mana) e o mecanismo de resfriamento.
Podemos ver que no valor padrão da classe de habilidade, você pode definir seu resfriamento e GE consumido
Insira a descrição da imagem aqui
Portanto, a seguir, usaremos GE para definir o resfriamento e o consumo de habilidades.

Adicionado consumo de habilidade GE

Primeiro criamos um blueprint e a classe pai selecionada é Gameplay Effect
Insira a descrição da imagem aqui
Chame-o de GE_Cost_FireBolt, que significa o custo da bola de fogo.
Insira a descrição da imagem aqui
Para consumir nossa duração, escolha Instantâneo.
Insira a descrição da imagem aqui
Em seguida, adicionamos Modificadores para reduzir a quantidade de mana do personagem, reduzindo-a em 20 cada vez que uma habilidade é usada.
Insira a descrição da imagem aqui
Cria-se um GE de consumo simples e aplicamos em competências
Insira a descrição da imagem aqui
Em seguida, temos que chamar o nó Commit Ability na habilidade. Este nó deduzirá o mana necessário para a habilidade. Se houver um cooldown, a habilidade entrará no tempo de cooldown.
Insira a descrição da imagem aqui
Commit Ability é um nó unificado para deduzir mana e resfriamento. Claro, você também pode separá-lo e ter nós separados para deduzir consumo e resfriamento.
Insira a descrição da imagem aqui

Execute o efeito de teste
Insira a descrição da imagem aqui

Analisar capacidade de comprometimento

Primeiro, determinamos se a habilidade será ativada se não houver mana suficiente. Imprimimos os dados antes de processar o consumo.
Insira a descrição da imagem aqui
Se a quantidade de mana for suficiente, ela poderá ser impressa com sucesso, mas se a quantidade de mana não puder suportar a liberação da habilidade, ela não será impressa, o que prova que se não houver recursos suficientes, a habilidade não será inserida, e não é julgado pela Commit Ability, que é usada apenas para consumo do nó Resource.
Insira a descrição da imagem aqui
Observamos o código-fonte e o código que ele chama é K2_CommitAbility
Insira a descrição da imagem aqui
CommitAbility é chamado internamente para implementar a lógica, e então é verificado se o consumo é suficiente para fornecer as habilidades, e a função é chamada para deduzir os recursos.
Insira a descrição da imagem aqui
CommExecute é uma função de dedução de recursos, que chama internamente dedução de recursos e resfriamento
Insira a descrição da imagem aqui
Dê uma olhada em Apply Cooldown, que pegará o nível de habilidade e aplicará o GE ao ASC
Insira a descrição da imagem aqui
Os recursos do aplicativo são consumidos da mesma forma e os níveis de habilidade também são obtidos.
Insira a descrição da imagem aqui

Defina níveis de habilidade para consumir diferentes quantidades de mana

Agora sabemos que usar o consumo de habilidade pode modificar a quantidade de mana que consome através do nível de habilidade. Podemos usar a tabela para definir diferentes níveis e consumo de mana.
Então criamos uma nova tabela de curva para definir o consumo de mana das habilidades em diferentes níveis.
Crie uma tabela de curva, selecione Constante como tipo e defina o consumo de mana em cada nível para um valor fixo.
Insira a descrição da imagem aqui
Nomeado CT_Cost
Insira a descrição da imagem aqui
Adiciona internamente o consumo de mana da habilidade do nível 1 ao nível 10 da Bola de Fogo.
Insira a descrição da imagem aqui
Em seguida, use a tabela de curvas aqui no GE, selecione a linha criada e defina o valor como -1
Insira a descrição da imagem aqui
Em seguida, modifique o nível de habilidade inicial no código para teste
Insira a descrição da imagem aqui
Depois de liberar uma habilidade, a quantidade de mana é três vezes maior que antes, o que prova que não há problema com as configurações.
Insira a descrição da imagem aqui

Adicionado tempo de espera de habilidade

O princípio do resfriamento da habilidade é aplicar uma etiqueta de resfriamento ao ASC durante a fase de resfriamento. Essa habilidade não pode ser usada novamente enquanto a etiqueta de resfriamento existir.
Então, queremos implementar o resfriamento, primeiro crie um rótulo para resfriamento

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

Então registre-se no gerenciador de tags

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

Cria uma bola de fogo para resfriar GE
Insira a descrição da imagem aqui
Modifique GE para um Has Duration sensível ao tempo
Insira a descrição da imagem aqui
Como você pode ver aqui, o tempo de resfriamento pode ser definido usando os vários métodos que usamos para modificar o valor antes. Aqui usamos o mais simples, configurando-o diretamente para 1s.
Insira a descrição da imagem aqui
Não precisamos modificar o conteúdo relacionado ao personagem aqui. Só precisamos adicionar uma tag de resfriamento ao ASC quando este GE entrar em vigor.
Insira a descrição da imagem aqui
Adicione um rótulo de resfriamento ao Ator por meio deste componente e adicione o rótulo de resfriamento que criamos.
Insira a descrição da imagem aqui
Em seguida, aplique o cooldown na habilidade
Insira a descrição da imagem aqui
Executando o teste, descobrimos que só podemos liberar a habilidade uma vez por segundo.

Geralmente geramos apenas uma instância de habilidade de personagem para um personagem. Para evitar que o cliente desligue a habilidade antes que a habilidade seja acionada, encerraremos a habilidade quando a animação de montagem da habilidade terminar ou o mix-in for. cancelado à força, e quando a habilidade terminar, para poder continuar reproduzindo a montagem.
Também precisamos ativar a capacidade instanciada de Retrigger para que, quando ela for ativada novamente, ela desative o gatilho anterior.
Insira a descrição da imagem aqui

Acompanhamento: Agora temos o consumo e ele pode ser exibido corretamente na UI, mas o resfriamento ainda não foi implementado. Após usar a habilidade, o progresso do resfriamento da habilidade não pode ser exibido na UI da habilidade. as mudanças na habilidade de resfriamento no futuro e exibi-las acima da IU.