Condivisione della tecnologia

79. Tempo di recupero e consumo delle abilità di creazione di giochi di ruolo UE5

2024-07-12

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

In questo articolo continuiamo a ottimizzare le abilità e ora le abilità attive aggiunte al personaggio possono essere sincronizzate con l'interfaccia utente. In questo articolo miglioreremo il consumo delle abilità (rilasciando abilità per ridurre il mana) e il meccanismo di raffreddamento.
Possiamo vedere che nel valore predefinito della classe di abilità, puoi impostarne il raffreddamento e il consumo di GE
Inserisci qui la descrizione dell'immagine
Pertanto, utilizzeremo successivamente GE per impostare il raffreddamento e il consumo delle competenze.

Aggiunto consumo di abilità GE

Per prima cosa creiamo un progetto e la classe genitore selezionata è Gameplay Effect
Inserisci qui la descrizione dell'immagine
Chiamalo GE_Cost_FireBolt, che significa il costo della palla di fuoco.
Inserisci qui la descrizione dell'immagine
Per consumare la nostra durata, scegli Istantaneo.
Inserisci qui la descrizione dell'immagine
Quindi aggiungiamo un modificatore per ridurre la quantità di mana del personaggio, riducendola di 20 ogni volta che viene utilizzata un'abilità.
Inserisci qui la descrizione dell'immagine
Viene creato un semplice GE di consumo e lo applichiamo alle competenze
Inserisci qui la descrizione dell'immagine
Successivamente, dobbiamo chiamare il nodo Commit Ability nell'abilità. Questo nodo dedurrà il mana richiesto per l'abilità. Se c'è un tempo di recupero, l'abilità entrerà nel tempo di recupero.
Inserisci qui la descrizione dell'immagine
Commit Ability è un nodo unificato per detrarre mana e raffreddamento. Naturalmente, puoi anche separarlo e avere nodi separati per detrarre consumo e raffreddamento.
Inserisci qui la descrizione dell'immagine

Esegui l'effetto di prova
Inserisci qui la descrizione dell'immagine

Analizza CommitAbility

Per prima cosa determiniamo se l'abilità verrà attivata se non c'è abbastanza mana. Stampiamo i dati prima di elaborare il consumo.
Inserisci qui la descrizione dell'immagine
Se la quantità di mana è sufficiente, può essere stampata con successo, ma se la quantità di mana non può supportare il rilascio dell'abilità, non verrà stampata, il che dimostra che se non ci sono abbastanza risorse, l'abilità non verrà inserita e non viene giudicato dall'Abilità di Commit, che viene utilizzata solo per il consumo del nodo Risorsa.
Inserisci qui la descrizione dell'immagine
Osserviamo il codice sorgente e il codice che chiama è K2_CommitAbility
Inserisci qui la descrizione dell'immagine
CommitAbility viene chiamato all'interno per implementare la logica, quindi viene verificato se il consumo è sufficiente per fornire le competenze e la funzione viene chiamata per detrarre le risorse.
Inserisci qui la descrizione dell'immagine
CommExecute è una funzione di detrazione delle risorse, che richiama internamente la detrazione e il raffreddamento delle risorse
Inserisci qui la descrizione dell'immagine
Dai un'occhiata ad Applica Cooldown, che prenderà il livello di abilità e applicherà il GE all'ASC
Inserisci qui la descrizione dell'immagine
Le risorse dell'applicazione vengono consumate allo stesso modo e vengono ottenuti anche i livelli di abilità.
Inserisci qui la descrizione dell'immagine

Imposta i livelli di abilità per consumare diverse quantità di mana

Ora, sappiamo che l'utilizzo del consumo di abilità può modificare la quantità di mana consumata attraverso il livello di abilità. Possiamo usare la tabella per definire diversi livelli e consumo di mana.
Quindi creiamo una nuova tabella delle curve per impostare il consumo di mana delle abilità a diversi livelli.
Crea una tabella di curve, seleziona Costante come tipo e imposta il consumo di mana a ciascun livello su un valore fisso.
Inserisci qui la descrizione dell'immagine
Denominato CT_Cost
Inserisci qui la descrizione dell'immagine
Aggiungi internamente il consumo di mana dell'abilità dal livello 1 al livello 10 di Fireball.
Inserisci qui la descrizione dell'immagine
Quindi utilizza la tabella delle curve qui in GE, seleziona la riga creata e imposta il valore su -1
Inserisci qui la descrizione dell'immagine
Quindi modificare il livello di abilità iniziale nel codice per il test
Inserisci qui la descrizione dell'immagine
Dopo aver rilasciato un'abilità, la quantità di mana sarà tre volte maggiore rispetto a prima, il che dimostra che non ci sono problemi con le impostazioni.
Inserisci qui la descrizione dell'immagine

Aggiunto tempo di recupero delle abilità

Il principio del raffreddamento delle abilità consiste nell'applicare un tag di raffreddamento all'ASC durante la fase di raffreddamento. Questa abilità non può essere utilizzata nuovamente finché esiste il tag di raffreddamento.
Quindi, vogliamo implementare il raffreddamento, creando prima un'etichetta per il raffreddamento

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

Quindi registrati al tag manager

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

Crea una palla di fuoco per raffreddare GE
Inserisci qui la descrizione dell'immagine
Modifica GE in una durata Has sensibile al tempo
Inserisci qui la descrizione dell'immagine
Come puoi vedere qui, il tempo di raffreddamento può essere impostato utilizzando i vari metodi che abbiamo utilizzato per modificare il valore in precedenza. Qui utilizziamo quello più semplice, impostandolo direttamente su 1s.
Inserisci qui la descrizione dell'immagine
Non abbiamo bisogno di modificare il contenuto relativo al personaggio qui. Dobbiamo solo aggiungere un tag rinfrescante all'ASC quando questo GE entra in vigore. Aggiungiamo un componente per l'effetto di gioco dei tag target.
Inserisci qui la descrizione dell'immagine
Aggiungi un'etichetta di raffreddamento all'attore tramite questo componente e aggiungi l'etichetta di raffreddamento che abbiamo creato.
Inserisci qui la descrizione dell'immagine
Quindi applica il tempo di recupero nell'abilità
Inserisci qui la descrizione dell'immagine
Eseguendo il test, abbiamo scoperto che possiamo rilasciare l'abilità solo una volta al secondo.

Generalmente generiamo solo un'istanza di un'abilità del personaggio per un personaggio. Per evitare che il client disattivi l'abilità prima che venga attivata, termineremo l'abilità quando termina l'animazione del montaggio dell'abilità o quando termina il mix-in. annullato con la forza e, una volta terminata l'abilità, sarà possibile continuare a riprodurre il montaggio.
Dobbiamo anche attivare l'abilità di istanza di riattivazione in modo che quando si attiva nuovamente, disattivi l'attivazione precedente.
Inserisci qui la descrizione dell'immagine

Follow-up: Ora abbiamo il consumo e può essere visualizzato correttamente sull'interfaccia utente, ma il raffreddamento non è stato ancora implementato. Dopo aver utilizzato l'abilità, l'avanzamento del raffreddamento dell'abilità non può essere visualizzato sull'interfaccia utente dell'abilità i cambiamenti futuri nella capacità di raffreddamento e visualizzarli sopra l'interfaccia utente.