‫Ciao e Benvenuto.
‫In questa lezione creeremo una modalità di gioco KML, che sarà solo una
‫delle possibili modalità di gioco che possiamo creare grazie al metodo virtual -- kill che potrebbe essere chiamato in
‫qualsiasi gioco modalità che vogliamo.
‫Immergiamoci e vediamo come implementeremo questo metodo virtuale.
‫Quindi vorremmo che il nostro gioco potesse finire.
‫Cosa significa che una partita finisca?
‫Significa che entriamo in una sorta di stato in cui abbiamo quello o abbiamo perso.
‫Informiamo il giocatore utilizzando alcune UI.
‫Diamo loro la possibilità di ricominciare e giocare di nuovo, qualcosa del genere.
‫Ora le classi coinvolte in questo in genere sono una modalità di gioco.
‫La modalità di gioco è responsabile della decisione delle regole del gioco, come chi ha vinto e chi ha perso.
‫E per questo, avremo bisogno di sapere chi viene ucciso.
‫Quindi faremo uccidere questo metodo virtuale chiamato pedone, che verrà chiamato come pedone
‫sparatutto quando muore.
‫Che sia o meno l'A. IO. oppure è il giocatore che sta morendo.
‫E inoltre, voglio aggiungere una piccola complicazione qui, ovvero che avrà modalità di gioco diverse
‫derivate dalla nostra modalità di gioco sparatutto principale.
‫Implementeranno quella modalità di gioco.
‫Ecco cosa significa la freccia qui.
‫Spesso è un po' controintuitivo il modo in cui va la freccia, ma uccidili tutti.
‫La modalità di gioco eredita dalla modalità di gioco sparatutto e sovrascrive il pedone ucciso per contare e decidere in
‫modo diverso le regole del gioco.
‫Ecco perché voglio inserire un metodo di uccisione del pedone virtuale nella modalità di gioco dello sparatutto genitore e quindi
‫implementarlo o sovrascriverlo di nuovo nella modalità di gioco kill all, che sarà la modalità di gioco che stiamo
‫implementando per noi stessi.
‫E potresti scegliere di fare diverse modalità di gioco in cui forse vuoi solo uccidere una
‫certa quantità di nemici nel livello piuttosto che tutti o qualcosa del genere.
‫Forse una cattura la bandiera, qualcosa di diverso.
‫Ma fondamentalmente quello che accadrà è che lo sparatutto - troverà la modalità di gioco che ha
‫la modalità di gioco tipo sparatutto e la chiamerà - ucciso.
‫E quindi, a seconda dell'implementazione effettivamente presente, passerà all'implementazione
‫tramite l'override.
‫Ora, un'altra complicazione qui è che la nostra logica dell'interfaccia utente e la logica di riavvio sono davvero qualcosa che
‫dovrebbe accadere nell'interfaccia utente del controller del giocatore generalmente essendo di competenza del giocatore piuttosto che qualcosa di globale come la modalità
‫di gioco.
‫Ciò è particolarmente vero nei giochi multiplayer perché la modalità di gioco in realtà non esiste sulla macchina
‫del giocatore, esiste solo sul server.
‫Quindi qualsiasi cosa dell'interfaccia utente dovrebbe essere in corso nel controller del giocatore.
‫Questa è una complicazione di cui non dobbiamo preoccuparci perché questo non
‫è un gioco multiplayer, ma è comunque utile usare le classi per quello per cui dovrebbero essere utilizzate in Unreal.
‫Quindi il controller del giocatore, l'effettiva classe del controller del giocatore root ha un metodo virtuale chiamato gioco è
‫terminato appositamente per questo scopo in modo che la modalità di gioco possa chiamare questo metodo e possiamo implementarlo nel nostro controller
‫di gioco sparatutto per eseguire l'interfaccia utente, riavviando tutto quel genere di cose.
‫Ma dovremo chiamarlo dalla nostra modalità di gioco quando avremo deciso che il gioco è finito.
‫Quindi chiameremo che il gioco virtuale è terminato sul controller del giocatore root e quindi poiché quel controller del giocatore
‫root è in realtà un giocatore sparatutto, un controller finirà per deviare indietro e chiamare.
‫Questo gioco è terminato.
‫Quindi sembra un percorso tortuoso che chiameremo dalla nostra pedina sparatutto tramite la modalità di gioco sparatutto alla modalità
‫di gioco kill them all al controller del giocatore al controller del giocatore sparatutto.
‫Ma questo ci consente molta flessibilità in termini di dire, beh, possiamo mescolare e abbinare diversi controller di gioco
‫che mostreranno l'interfaccia utente in modi diversi, a livelli diversi.
‫Possiamo mescolare e abbinare diverse modalità di gioco che funzioneranno in modi diversi, ed è per
‫questo che l'ho progettato in questo modo.
‫È un po' eccessivo per il nostro progetto, ma ti mostra come questo potrebbe estendersi ad altri progetti
‫con l'acquisizione delle modalità di gioco e diversi tipi di controller del giocatore.
‫Quindi proviamo a implementarlo.
‫Andremo e prima di tutto troveremo una modalità di gioco del percorso.
‫Ce n'è già uno creato perché sono partito da un progetto C++.
‫Abbiamo questa semplice modalità di gioco sparatutto di base e quello che voglio fare
‫qui è creare una funzione pubblica che tornerà nulla e sarà -- uccisa e dovremo passare nel -- che
‫è stato ucciso qui.
‫Quindi sarà una -- star chiamata -- uccisa in quel modo.
‫E poi all'inizio, faremo di questo un metodo virtuale e andremo avanti
‫e creeremo un'implementazione di base che essenzialmente non fa nulla qui.
‫Quindi creeremo una sottoclasse.
‫Quindi nuova classe C++, mostrerà tutte le classi e cercheremo la modalità di gioco sparatutto
‫semplice come classe base e la chiameremo la modalità di gioco kill em all in questo modo e andiamo avanti e
‫creiamo quella classe.
‫Poi, quando sarà compilato, voglio solo passare un secondo e passare al nostro personaggio sparatutto.
‫CP E puoi vedere qui che abbiamo il nostro è morto nel metodo subisci danno.
‫Ora, se questo è morto, quello che voglio fare è entrare in possesso della nostra modalità di gioco e chiamare il --
‫ucciso.
‫Quindi il modo in cui lo facciamo è iniziare con la chiamata per ottenere il mondo per ottenere la modalità di gioco.
‫Quindi esci dalla modalità di gioco.
‫E poi quello che vogliamo fare è che questa modalità di gioco sia del tipo corretto, che è la modalità di
‫gioco semplice, principale, sparatutto semplice che ci permette di cambiare questo personaggio, usarlo con diverse modalità di gioco,
‫come catturare le modalità di gioco della bandiera.
‫Quindi il modo in cui possiamo farlo, possiamo usare le parentesi angolari proprio nella modalità get o gioco proprio qui.
‫E faremo una semplice modalità di gioco sparatutto e dovremo includerla nella parte superiore.
‫Quindi includi una semplice modalità di gioco sparatutto di base in questo modo non ho capito bene il nome dell'intera classe.
‫Penso.
‫Quindi sarà una semplice modalità di gioco di base.
‫Questo è ciò che stiamo cercando di ottenere e possiamo andare avanti e memorizzarlo in un puntatore variabile, chiamiamola modalità
‫di gioco.
‫E poi quello che vogliamo fare è su questa nuova riga, probabilmente vogliamo controllare di averlo ottenuto e non è un
‫puntatore nullo.
‫Quindi la modalità di gioco non è uguale a un puntatore nullo.
‫E poi, se non è uguale a tutti i punti, è dove vogliamo chiamare la modalità di gioco pedone freccia
‫ucciso e il pedone ucciso è così?
‫Quindi ora la modalità di gioco è a conoscenza dell'uccisione di una pedina.
‫Piccola mini sfida per te per ignorare la modalità di gioco kill them all in modo che tu possa.
‫Esci quando il -- viene ucciso e impostalo come modalità di gioco predefinita nella tua mappa.
‫Bene.
‫Quindi spero che tu abbia provato quella piccola mini sfida.
‫Andremo avanti e implementeremo.
‫Quindi lo farò copiando la sezione pubblica della nostra semplice modalità di gioco sparatutto di base, ed è difficile tenere
‫traccia di tutte queste cose.
‫Quindi andremo alla nostra base della modalità di gioco kill them all, che eredita da essa.
‫E incolleremo il metodo virtuale e aggiungeremo la parola chiave override per assicurarci di
‫sovrascrivere correttamente questo metodo.
‫Quindi creerò un'implementazione in C++ per la nostra modalità di gioco KML di base.
‫È qui che dovremmo ricevere quel messaggio di registro.
‫E solo per essere super attenti, sappiamo che non c'è nulla nell'implementazione.
‫Ma non si sa mai.
‫Le cose potrebbero cambiare in seguito e potremmo essere morsi nella bomba.
‫Quindi vogliamo far uccidere un pedone.
‫Super -- ucciso con il -- ucciso.
‫Ha senso.
‫E poi vogliamo fare un dialogo qui in pratica dicendo che un -- è stato ucciso.
‫E possiamo vedere se funziona andando su Unreal e compilando, quindi andando all'elemento progetti sulla
‫barra degli strumenti e selezionando nelle impostazioni del progetto.
‫La modalità di gioco predefinita che vogliamo essere, se selezioniamo la modalità di gioco, la classe base, vogliamo che sia la modalità
‫di gioco base di kill them all, in pratica vai avanti e fallo.
‫In effetti, non è proprio quello che vogliamo fare se andiamo a selezionare.
‫Volevamo che fosse effettivamente un figlio del progetto e abbiamo già un figlio del progetto che ha molte cose
‫impostate.
‫Quindi facciamo un lavoro di rieducazione lì.
‫Andremo alle origini, troveremo la modalità di gioco sparatutto BP, che abbiamo qui.
‫Rinomineremo questa modalità di gioco kill all BP e quindi possiamo aprirla, agganciare la finestra, aprire l'editor di blueprint
‫completo, andare alle impostazioni della classe e cambiare il genitore nella modalità di gioco KML, in pratica
‫C++.
‫E in questo modo dovremmo eseguire il codice corretto se andiamo al nostro messaggio per visualizzare
‫il registro e premiamo play e poi uccidiamo un personaggio, abbiamo un problema che non sembra avere la configurazione corretta,
‫quindi se torniamo alle impostazioni predefinite della classe e cambia la classe predefinita in modo che sia il personaggio sparatutto BP, dovrebbe
‫essere corretto.
‫Salva e compila nel caso in cui fosse sbagliato.
‫E poi controlla i miei progetti che scendono qui.
‫È selezionato il gioco KML, quello C++.
‫Quindi in realtà vogliamo scegliere il progetto qui dentro e andare avanti e premere play.
‫Ora abbiamo la nostra pedina.
‫Possiamo andare avanti e uccidere questo tizio e puoi vedere che una pedina è stata uccisa.
‫Prince è nel messaggio di registro?
‫Quindi funziona in modo fantastico.
‫Ora, nella prossima sezione, esamineremo la seconda parte di questo, che
‫chiama il gioco è terminato quando in realtà vogliamo terminare il gioco e poter ricominciare da lì in poi.
‫Quindi ci vediamo in quella lezione.