Alcuni degli ostacoli più facili si muovono semplicemente in avanti e all'indietro. Li troverai spesso nelle sfide piattaforma, dove dovrai temporizzare i tuoi salti ed eseguire movimenti precisi per evitare di cadere.
Muovere una piattaforma in questo modo si chiama traslazione, ovvero modificare la posizione della trasformazione di un oggetto. In questa sezione imparerai a creare piattaforme che non solo si muovono avanti e indietro, ma che possono anche muoversi in più punti del mondo per poi utilizzarle per creare il tuo primo ostacolo!
Creazione di oggetti scenografici che traslano
Segui i passaggi seguenti per creare il codice che trasla le tue piattaforme:
Crea una nuova classe Verse denominata
translating_propche eredita damovable_proputilizzando Verse Explorer. Aggiungi lo specificatore<concrete>a questa classe per esporre le proprietà a UEFN.Verse# A prop that moves (translates) toward either a Creative prop target # or a position in world space. translating_prop<public> := class<concrete>(movable_prop):Aggiungi le istruzioni
using { /Fortnite.com/Devices/CreativeAnimation }eusing { /UnrealEngine.com/Temporary/SpatialMath }all'inizio del file per importare questi moduli. Ti serviranno per animare il tuo oggetto scenografico. I tooltip utilizzati in questa sezione sono inclusi anche qui.Verseusing { /Fortnite.com/Devices } using { /Fortnite.com/Devices/CreativeAnimation } using { /Verse.org/Simulation } using { /UnrealEngine.com/Temporary/SpatialMath } MovePositionTip<localizes>:message = "The optional position to move to World Space. Use this if you do not want to set a MoveTarget." # A prop that moves (translates) toward either a Creative prop target # or a position in world space. translating_prop<public> := class<concrete>(movable_prop):All'inizio della definizione della classe
translating_prop, aggiungi i seguenti campi:Array modificabile di
creative_propdenominatoMoveTargets. Questi sono gli oggetti scenografici della modalità Creativa di Fortnite verso cui il tuoRootPropsi muoverà durante il gameplay. Se al posto di una trasformazione utilizzi un altro oggetto scenografico come target verso cui muoversi, renderai più facile visualizzare la direzione verso cui sono diretti i tuoi oggetti scenografici. Potrai renderli invisibili durante il gameplay nell'editor, più avanti.Verse# The Creative prop targets for the RootProp to move toward. @editable {ToolTip := MoveTargetsTip} var MoveTargets:[]creative_prop = array{}Variabile
vector3opzionale modificabile denominataMovePosition. Se non assegni un oggetto scenograficoMoveTarget, il tuo oggetto scenografico radice la utilizzerà per sapere dove spostarsi.Verse# The position for the RootProp to move toward. Use this if you # do not want to set a MoveTarget. @editable {ToolTip := MovePositionTip} var MovePosition:?vector3 = falseVariabile
vector3denominataTargetPosition. Questa è la posizione in cui l'oggetto scenografico si muoverà effettivamente e sarà impostata sulla posizione del bersaglio di movimento o suMovePosition.Verse# The position the prop is currently targeting. var TargetPosition:vector3 = vector3{}La tua definizione della classe deve essere simile a:
Verse# A prop that moves (translates) toward either a Creative prop target # or a position in world space. translating_prop<public> := class<concrete>(movable_prop): # The Creative prop targets for the RootProp to move toward. @editable {ToolTip := MoveTargetsTip} var MoveTargets:[]creative_prop = array{} # The optional position for the RootProp to move toward. Use this if you # do not want to set a MoveTarget.
Poiché hai già impostato la funzione
Move()che muove il tuo oggetto scenografico inmovable_prop, puoi eseguirne l'override in questa classe. Esegui l'override della funzioneMove()nella classetranslating_prop.Verse# Translate toward the MovePosition, or MoveTarget if one is set. Move<override>()<suspends>:void=In
Move(), in un'espressioneif, controlla seMovePositionè impostata e memorizzata in un valoreNewPosition. In caso affermativo, impostaTargetPositionsuNewPosition.Verse# Translate the RootProp toward the MoveTarget, or MovePosition if one is set. Move<override>()<suspends>:void= # Set the TargetPosition to the MovePosition if it is set. if: NewPosition := MovePosition? then: set TargetPosition = NewPositionDevi passare un
animation_modealla funzioneMoveToEase(). L'animazione viene riprodotta una volta ogni volta che viene chiamatoMove()e la modalitàanimation_modecontrolla cosa accade al termine dell'animazione. ChiamaMoveToEase()per passareTargetPosition,MoveDuration,MoveEaseTypeeanimation_mode.OneShot. Utilizzando questa modalità di animazione, l'animazione si arresterà una volta che l'oggetto avrà raggiunto il suo target. Questa è la funzione sovraccaricataMoveToEase()che hai impostato in precedenza e che non accetta una rotazione o una scala.Verse# Set the TargetPosition to the MovePosition if it is set. if: NewPosition := MovePosition? then: set TargetPosition = NewPosition # Call MoveToEase to start moving the prop. The OneShot animation mode will play the animation once. RootProp.MoveToEase(TargetPosition, MoveDuration, MoveEaseType, animation_mode.OneShot)Mentre la modalità di animazione one-shot è utile se vuoi reimpostare il tuo oggetto o mantenerlo in movimento, cosa accade se vuoi riprodurlo al contrario? In questo caso, puoi utilizzare la modalità di animazione
PingPong. Ciò riproduce l'animazione poi la riproduce al contrario per riportare l'oggetto scenografico al punto di partenza. Esiste anche la modalità di animazioneLoopche ripete in loop l'animazione ma richiede che l'animazione termini nello stesso punto in cui inizia. Scegli la modalità di animazione più adatta alle esigenze della tua esperienza.Quando imposti i tuoi oggetti scenografici, se non hai impostato un
MovePositionnell'editor, dovrai impostare uno o piùMoveTargetsverso cui far muovere il tuo oggetto scenografico radice. Per gestireMoveTargetsin un'espressionefor, itera ogni target inMoveTargets. Controlla seMoveTargetè impostato chiamandoIsValid[]. In caso affermativo, impostaTargetPositionsulla traslazione diMoveTarget.Verse# Set the TargetPosition to the MovePosition if it is set. if: NewPosition := MovePosition? then: set TargetPosition = NewPosition else: for: MoveTarget:MoveTargets do: # Set the TargetPosition to the MoveTarget's position if theInfine, chiama
MoveToEase(), di nuovo conanimation_mode.OneShotcome modalità di animazione. Se esegui questa operazione in un'espressionefor, il tuo oggetto scenografico si muoverà su ogni target in sequenza, reimpostandosi al termine o proseguendo in base ai parametri che hai impostato. La funzioneMove()completa deve essere simile a:Verse# Translate the RootProp toward the MoveTarget, or MovePosition if one is set. Move<override>()<suspends>:void= # Set the TargetPosition to the MovePosition if it is set. if: NewPosition := MovePosition? then: set TargetPosition = NewPosition # Call MoveToEase to start moving the prop. The OneShot animation mode will play the animation once.
Costruzione del dispositivo Verse
Ora che il codice Verse è completo, ti occorre un modo per richiamarlo a livello interno. Utilizzerai un altro dispositivo Verse per coordinare gli oggetti scenografici e configurarli tutti all'inizio del gioco. Segui questa procedura per coordinare gli ostacoli e muovere le piattaforme!
Crea un nuovo dispositivo Verse chiamato
prop_animatorutilizzando Verse Explorer. Questo è il dispositivo che coordinerà il movimento degli oggetti scenografici.In
prop_animator, aggiungi un array modificabile ditranslating_propdenominatoTranslatingProps. Quindi inOnBegin(), in un'espressionefor, chiamaSetup()su ogni oggetto scenografico. Il tuo fileprop_animatorcompleto deve essere simile al seguente:Verseusing { /Fortnite.com/Devices } using { /Verse.org/Simulation } using { /UnrealEngine.com/Temporary/Diagnostics } TranslatingPropsTip<localizes>:message = "The props that translate (move) using animation." # Coordinates moving props through animation by calling each moveable_prop's Setup() method. prop_animator := class(creative_device): # Array of moveable_props that translate using animation.Salva il codice e compilalo.
Trascina il dispositivo
prop_animatornel livello.
Collegamento degli oggetti scenografici ai dispositivi
Nell'editor, elimina alcuni degli oggetti scenografici all'inizio per creare spazio. Aggiungi due oggetti scenografici FG01 Piattaforma fluttuante M al tuo livello. Poiché queste sono le piattaforme che animerai, denominale TranslatingPlatform. Quindi aggiungi vari oggetti scenografici FG01 Lampadina pulsante che saranno i target verso cui si muoverà ogni piattaforma. Denomina questi PlatformTarget. Posiziona le piattaforme sopra lo spazio e assicurati di collocare i target nel punto in cui vuoi che si spostino le piattaforme. Puoi specificare più target per ogni piattaforma.
Impostazione degli oggetti scenografici che traslano. Ogni piattaforma si muove avanti e indietro tra due target di movimento come indicato dalle frecce.
Se vuoi nascondere gli oggetti scenografici durante il gameplay, assicurati di impostare Attore nascosto in gioco in Rendering su Vero per ogni target.
Trascina il dispositivo prop_animator nel livello e selezionalo. Nell'Outliner, aggiungi un elemento array a TranslatingProps per ogni piattaforma. Assegna a ciascun oggetto scenografico i seguenti valori:
| Opzione | Valore | Spiegazione |
|---|---|---|
MoveTargets | Assegna ai target verso cui vuoi muovere il tuo oggetto scenografico. | Questi sono i target oggetto scenografico della modalità Creativa di Fortnite verso cui si muoverà il tuo oggetto scenografico, in ordine. |
RootProp | Assegna all'oggetto scenografico che stai animando. | Questo è l'oggetto scenografico che stai animando. |
Fai clic su Avvia sessione e guarda le tue piattaforme animarsi! Prova a variare MoveDuration, MoveEaseType e i delay di inizio e di fine per creare scenari differenti.
La traslazione è terminata, nella prossima sezione creerai oggetti scenografici che ruotano in diverse direzioni!
Passaggio successivo
4. Oggetti scenografici rotanti
Come ruotare gli ostacoli del tuo percorso Fall Guys.
Codice completo
Ecco il codice completo compilato in questa sezione:
translating_prop.verse
using { /Fortnite.com/Devices }
using { /Fortnite.com/Devices/CreativeAnimation }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/SpatialMath }
MovePositionTip<localizes>:message = "The optional position to move to World Space. Use this if you do not want to set a MoveTarget."
# A prop that moves (translates) toward either a Creative prop target
# or a position in world space.
translating_prop<public> := class<concrete>(movable_prop):
prop_animator.verse
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
TranslatingPropsTip<localizes>:message = "The props that translate (move) using animation."
# Coordinates moving props through animation by calling each moveable_prop's Setup() method.
prop_animator := class(creative_device):
# Array of moveable_props that translate using animation.