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.
Par conséquent, nous utiliserons ensuite GE pour définir le refroidissement et la consommation des compétences.
Nous créons d'abord un plan et la classe parent sélectionnée est Gameplay Effect
Nommez-le GE_Cost_FireBolt, ce qui signifie le coût d'une boule de feu.
Pour consommer notre durée, choisissez Instantané.
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.
Un GE de consommation simple est créé et nous l'appliquons aux compétences
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.
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.
Exécuter l'effet de test
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.
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.
Nous regardons le code source et le code qu'il appelle est K2_CommitAbility
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.
CommExecute est une fonction de déduction des ressources, qui appelle en interne la déduction et le refroidissement des ressources
Jetez un œil à Apply Cooldown, qui prendra le niveau de compétence et appliquera le GE à l'ASC.
Les ressources applicatives sont consommées de la même manière, et les niveaux de compétences sont également obtenus.
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.
Nommé CT_Cost
Ajoutez en interne la consommation de mana de compétence du niveau 1 au niveau 10 de Fireball.
Utilisez ensuite la table de courbes ici dans GE, sélectionnez la ligne créée et définissez la valeur sur -1
Modifiez ensuite le niveau de compétence initial dans le code pour tester
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.
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; //火球术冷却标签
Alors inscrivez-vous au gestionnaire de balises
GameplayTags.Cooldown_Fire_FireBolt = UGameplayTagsManager::Get()
.AddNativeGameplayTag(
FName("Cooldown.Fire.FireBolt"),
FString("火球术冷却标签")
);
Crée une boule de feu pour refroidir GE
Modifier GE en une durée Has sensible au temps
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.
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.
Ajoutez une étiquette de refroidissement à l'Actor via ce composant et ajoutez l'étiquette de refroidissement que nous avons créée.
Appliquez ensuite le temps de recharge dans la compétence
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.
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.