Partage de technologie

79. Temps de recharge et consommation des compétences de création de RPG UE5

2024-07-12

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

Dans cet article, nous continuons à optimiser les compétences, et désormais les compétences actives ajoutées au personnage peuvent être synchronisées avec l'interface utilisateur. Dans cet article, nous améliorerons la consommation des compétences (libération de compétences pour réduire le mana) et le mécanisme de refroidissement.
Nous pouvons voir que dans la valeur par défaut de la classe de compétence, vous pouvez définir son refroidissement et ses GE consommés.
Insérer la description de l'image ici
Par conséquent, nous utiliserons ensuite GE pour définir le refroidissement et la consommation des compétences.

Ajout de la consommation de compétences GE

Nous créons d'abord un plan et la classe parent sélectionnée est Gameplay Effect
Insérer la description de l'image ici
Nommez-le GE_Cost_FireBolt, ce qui signifie le coût d'une boule de feu.
Insérer la description de l'image ici
Pour consommer notre durée, choisissez Instantané.
Insérer la description de l'image ici
Ensuite, nous ajoutons un modificateur pour réduire la quantité de mana du personnage, en la réduisant de 20 à chaque fois qu'une compétence est utilisée.
Insérer la description de l'image ici
Un GE de consommation simple est créé et nous l'appliquons aux compétences
Insérer la description de l'image ici
Ensuite, nous devons appeler le nœud Commit Ability dans la compétence. Ce nœud déduira le mana requis pour la compétence. S'il y a un temps de recharge, la compétence entrera dans le temps de recharge.
Insérer la description de l'image ici
Commit Ability est un nœud unifié pour déduire le mana et le refroidissement. Bien sûr, vous pouvez également le séparer et avoir des nœuds séparés pour déduire la consommation et le refroidissement.
Insérer la description de l'image ici

Exécuter l'effet de test
Insérer la description de l'image ici

Analyser la CommitAbility

Tout d'abord, nous déterminons si la compétence sera activée s'il n'y a pas assez de mana. Nous imprimons une donnée avant de traiter la consommation.
Insérer la description de l'image ici
Si la quantité de mana est suffisante, elle peut être imprimée avec succès, mais si la quantité de mana ne peut pas prendre en charge la libération de la compétence, elle ne sera pas imprimée, ce qui prouve que s'il n'y a pas assez de ressources, la compétence ne sera pas saisie, et il n'est pas jugé par Commit Ability, qui n'est utilisé que pour la consommation du nœud de ressource.
Insérer la description de l'image ici
Nous regardons le code source et le code qu'il appelle est K2_CommitAbility
Insérer la description de l'image ici
CommitAbility est appelé à l'intérieur pour implémenter la logique, puis il est vérifié si la consommation est suffisante pour fournir les compétences, et la fonction est appelée pour déduire les ressources.
Insérer la description de l'image ici
CommExecute est une fonction de déduction des ressources, qui appelle en interne la déduction et le refroidissement des ressources
Insérer la description de l'image ici
Jetez un œil à Apply Cooldown, qui prendra le niveau de compétence et appliquera le GE à l'ASC.
Insérer la description de l'image ici
Les ressources applicatives sont consommées de la même manière, et les niveaux de compétences sont également obtenus.
Insérer la description de l'image ici

Définissez des niveaux de compétence pour consommer différentes quantités de mana

Maintenant, nous savons que l'utilisation de la consommation de compétences peut modifier la quantité de mana consommée en fonction du niveau de compétence. Nous pouvons utiliser le tableau pour définir différents niveaux et consommations de mana.
Nous créons donc une nouvelle table de courbes pour définir la consommation de mana des compétences à différents niveaux.
Créez une table de courbes, sélectionnez Constante comme type et définissez la consommation de mana à chaque niveau sur une valeur fixe.
Insérer la description de l'image ici
Nommé CT_Cost
Insérer la description de l'image ici
Ajoutez en interne la consommation de mana de compétence du niveau 1 au niveau 10 de Fireball.
Insérer la description de l'image ici
Utilisez ensuite la table de courbes ici dans GE, sélectionnez la ligne créée et définissez la valeur sur -1
Insérer la description de l'image ici
Modifiez ensuite le niveau de compétence initial dans le code pour tester
Insérer la description de l'image ici
Après avoir libéré une compétence, la quantité de mana est trois fois plus élevée qu'avant, ce qui prouve qu'il n'y a aucun problème avec les réglages.
Insérer la description de l'image ici

Temps de recharge des compétences ajouté

Le principe du refroidissement des compétences est d'appliquer une balise de refroidissement à l'ASC pendant la phase de refroidissement. Cette compétence ne peut pas être réutilisée tant que la balise de refroidissement existe.
Nous voulons donc implémenter le refroidissement, créez d'abord une étiquette pour le refroidissement

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

Alors inscrivez-vous au gestionnaire de balises

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

Crée une boule de feu pour refroidir GE
Insérer la description de l'image ici
Modifier GE en une durée Has sensible au temps
Insérer la description de l'image ici
Comme vous pouvez le voir ici, le temps de refroidissement peut être réglé en utilisant les différentes méthodes que nous avons utilisées auparavant pour modifier la valeur. Ici, nous utilisons la plus simple, en la réglant directement sur 1 s.
Insérer la description de l'image ici
Nous n'avons pas besoin de modifier le contenu lié au personnage ici. Nous devons seulement ajouter une balise de refroidissement à l'ASC lorsque ce GE prend effet. Nous ajoutons un composant d'effet de gameplay de balises cibles.
Insérer la description de l'image ici
Ajoutez une étiquette de refroidissement à l'Actor via ce composant et ajoutez l'étiquette de refroidissement que nous avons créée.
Insérer la description de l'image ici
Appliquez ensuite le temps de recharge dans la compétence
Insérer la description de l'image ici
En effectuant le test, nous avons constaté que nous ne pouvons libérer la compétence qu'une fois par seconde.

Nous ne générons généralement qu'une seule instance d'une compétence de personnage pour un personnage. Afin d'éviter que le client ne désactive la compétence avant qu'elle ne soit déclenchée, nous mettrons fin à la compétence lorsque l'animation de montage de la compétence se terminera ou que le mix-in sera terminé. annulé de force, et lorsque la compétence se termine, pour pouvoir continuer à jouer le montage.
Nous devons également activer la capacité instanciée Retrigger afin que lorsqu'elle se déclenche à nouveau, elle désactive le déclencheur précédent.
Insérer la description de l'image ici

Suivi : Nous avons maintenant la consommation et elle peut être affichée correctement sur l'interface utilisateur, mais le refroidissement n'a pas encore été implémenté. Après avoir utilisé la compétence, la progression du refroidissement de la compétence ne peut pas être affichée sur l'interface utilisateur de la compétence. les changements dans la compétence de refroidissement à l’avenir et affichez-les au-dessus de l’interface utilisateur.