Download Free Audio of Abbiamo visto che possiamo creare un nuovo compone... - Woord

Read Aloud the Text Content

This audio was created by Woord's Text to Speech service by content creators from all around the world.


Text Content or SSML code:

Abbiamo visto che possiamo creare un nuovo componente dichiarando prima il componente nel file. h file. Abbiamo appreso che possiamo dichiarare in avanti la classe usando la parola chiave class, che dice al compilatore che il file di intestazione per il tipo particolare non è presente nel file corrente ma che sarà incluso nella riga in cui la variabile verrà effettivamente utilizzata. Abbiamo quindi visto come utilizzare la funzione del modello CreateDefaultSubobject per costruire un nuovo oggetto e restituirne l'indirizzo, che abbiamo memorizzato nella variabile del puntatore FirstActorMesh. Abbiamo quindi appreso che UStaticMeshComponent è una classe contenente variabili e funzioni, una delle quali è chiamata StaticMesh, di tipo UStaticMesh. Quindi impostiamo il valore per quella variabile nel file Dettagli pannello per il componente Mesh statico in Blueprint Editor. Ora che sappiamo come aggiungere componenti alla nostra classe, possiamo dare un'occhiata ad alcune funzioni più utili ereditate dalla classe Actor progettate per ottenere e impostare la posizione e la rotazione di un attore. Ottenere e impostare la rotazione e la posizione di un attore La posizione e la rotazione di un attore sono accessibili tramite le funzioni getter ereditate, GetActorLocation e GetActorRotation, rispettivamente. Possono anche essere impostati rispettivamente con SetActorLocation e SetActorRotation. 1. Nella funzione Tick, appena sotto la riga ActorLifetime + = DeltaTime; , Inserisci: Posizione FVector = GetActorLocation (); FRotator Rotation = GetActorRotation (); UE_LOG (LogTemp, Warning, TEXT ("% s Location: (% f,% f,% f), Rotation: (% f,% f,% f)"), * GetName (), Location.X, Location. Y, Location.Z, Rotation.Pitch, Rotation.Yaw, Rotation.Roll); Location.Z + = 15.f * DeltaTime; Rotation.Yaw + = 45.f * DeltaTime; SetActorLocation (posizione); SetActorRotation (Rotation); Qui ne stiamo creando due variabili locali ( variabili che esistono nell'ambito del blocco dato, in questo caso, l'ambito della funzione Tick), Location e Rotation. GetActorLocation ottiene la posizione dell'attore sotto forma di FVector. FVector è una struttura che contiene i componenti X, Y e Z della posizione dell'attore sotto forma di valori float. È possibile accedervi tramite l'operatore punto (.), Come avviene nella chiamata UE_LOG. GetActorRotation ottiene la rotazione dell'attore e la restituisce sotto forma di FRotator. FRotator è simile a FVector, solo che contiene i componenti Yaw, Pitch e Roll della rotazione dell'attore sotto forma di valori float. Quindi usiamo UE_LOG, stampando una stringa di testo con diverse sequenze di escape:% s per il nome dell'attore, tre% f simboli per la X, Componenti Y e Z della posizione e tre simboli% f per imbardata, beccheggio e rollio della rotazione dell'attore. Quindi accediamo al componente Z della variabile Location e aggiungiamo un valore float di 15.f * DeltaTime. Accediamo al componente Yaw e aggiungiamo un valore float di 45.f * DeltaTime ad esso. Quindi utilizziamo SetActorLocation, una funzione che accetta un parametro di input di tipo FVector, per impostare la posizione dell'attore. Usiamo anche SetActorRotation, una funzione che accetta un parametro di input di tipo FRotator, per impostare la rotazione dell'attore. Utilizzo di Delta Time Abbiamo utilizzato DeltaTime come fattore di scala per gli importi aggiunti alle variabili Posizione e Rotazione per ogni fotogramma. Questo perché la frequenza della funzione Tick varia al variare dell'utilizzo delle risorse del computer da parte del gioco. Per evitare che le velocità di modifica della posizione e della rotazione variano con la frequenza del frame rate, compensiamo la modifica moltiplicando per DeltaTime. Quando la frequenza dei fotogrammi è maggiore, DeltaTime è inferiore. Quando il frame rate è inferiore, DeltaTime è maggiore. Aggiungendo un valore di 45.f * DeltaTime alla rotazione di un attore si ottiene una velocità di rotazione costante di 45 gradi al secondo. 2. Prima di testare questo codice, dovremmo eliminare l'istanza della classe FirstActor C ++ dal nostro livello. Fare così. Il motivo è perché il codice C ++ sia per C ++ Actor che per Blueprint Actor verrà eseguito e avremo due attori diversi che inviano spam contemporaneamente al registro, rendendo difficile dare un senso alle informazioni. Individuare FirstActor nel World Outliner e premi il pulsante Elimina tasto sulla tastiera. Ora che ne abbiamo solo uno FirstActor nel mondo, FirstActor_BP, possiamo testare il nostro codice. Trascina il file FirstActor_BP in un punto davanti al personaggio in terza persona in modo che tu possa vederlo quando premi Giocare . stampa Giocare , quindi fare clic sul file Registro di output. Figura 5.25: Modifica della posizione e rotazione della piramide e stampa su il registro di output Notate due cose: la piramide si alza e gira e il Registro di output sta inviando spam alla posizione e alla rotazione dell'attore. Ora che abbiamo le basi della classe Attore, siamo pronti per avventurarci in classi più complicate in Unreal Engine. Continueremo il nostro viaggio nel prossimo capitolo immergendoci nella classe Pawn. Sommario Abbiamo appreso che Unreal Engine ha la capacità di creare classi dalla gerarchia di classi di Unreal Engine e, in tal caso, le classi vengono fornite con alcune macro generate automaticamente che consentono alla classe di partecipare al sistema di riflessione di Unreal Engine. Abbiamo appreso che la riflessione è la capacità di un programma di osservare se stesso in fase di esecuzione e l'Unreal Header Tool (UHT) scansiona la classe per le macro generate automaticamente che gli dicono di generare codice di riflessione. Abbiamo appreso che il sistema di riflessione include la raccolta dei rifiuti, che gestisce la gestione della memoria per noi, quindi non è necessario utilizzare le nuove parole chiave ed eliminare durante l'allocazione della memoria con oggetti e variabili raccolti dai rifiuti. Poi abbiamo imparato come farlo usa Tick e BeginPlay in C ++ e che queste sono funzioni virtuali ereditate e sovrascritte nella nostra classe Actor. Abbiamo quindi imparato a utilizzare le macro UPROPERTY e UFUNCTION per esporre variabili e funzioni ai Blueprints, oltre a controllare se le variabili esposte possono essere modificabili, sia sul Blueprint che sulle istanze del livello. Abbiamo quindi imparato come aggiungere componenti alla nostra classe Attore e abbiamo aggiunto una Mesh statica per dare al nostro attore una rappresentazione visiva nel mondo. Infine, abbiamo visitato alcune funzioni utilizzate per accedere alla posizione e alla rotazione di un attore e abbiamo utilizzato le funzionalità di registrazione per registrare queste informazioni nel Registro di output. Ora che abbiamo una certa esperienza nella creazione di classi Unreal Engine e abbiamo una presa sulle capacità di un attore, siamo pronti per esaminare una classe derivata da attore che ha capacità più specializzate: il pedone.