Questa funzione è in stato sperimentale, quindi puoi provarla, fornire un feedback e vedere cosa stiamo pianificando. Al momento non puoi pubblicare un progetto che utilizza Inventario e oggetti personalizzati.
Ricorda che non garantiamo la retrocompatibilità per gli asset creati in fase sperimentale, che le API per queste funzioni sono soggette a modifiche e che potremmo rimuovere intere funzioni sperimentali o funzionalità specifiche a nostra discrezione. Prima di iniziare a usare questa funzionalità, consulta l'elenco dei problemi noti.
Questo tutorial mostra come utilizzare il sistema di inventario e oggetti personalizzati con Scene Graph e Verse per creare un oggetto chiave elettronica personalizzato.
Una volta compilato questo esempio per imparare a creare una chiave elettronica personalizzata, puoi utilizzarla nei giochi che coinvolgono obiettivi finalizzati a individuare e utilizzare le chiavi elettroniche per accedere alle aree bloccate. Alcuni esempi includono:
Stanza chiusa a chiave che contiene l'oggetto per una rapina
Area successiva del gioco
Tesoro o ricompense per aver sconfitto un boss
Prima di iniziare
Devi avere familiarità con il codice UEFN, Scene Graph e Verse per completare correttamente questo tutorial.
Imposta il progetto
Segui questi step per impostare il tuo progetto e abilitare Inventario e oggetti personalizzati.
Apri UEFN e crea un progetto da qualsiasi modello di isola. Nei modelli di isole, puoi utilizzare il progetto Vuoto se desideri avere a disposizione un'area libera con cui lavorare. Assegna un nome al tuo nuovo progetto e fai clic su Crea per aprirlo nell'editor.
Nella barra degli strumenti, fai clic su Progetto e seleziona Impostazioni progetto.
Scorri verso il basso fino alla sezione Accesso sperimentale e seleziona la casella Sistema di inventario. In questo modo si abilitano inventario e oggetti personalizzati.
Crea la stanza
Per prima cosa devi creare la stanza per l'esempio. L'esempio è strutturato come una dimostrazione che mette a confronto due porte bloccate:
La prima mostra come una chiave elettronica di Fortnite riesca ad aprire una porta che ha un dispositivo Blocco, utilizzando un dispositivo Pulsante condizionale per determinare se il giocatore è in possesso della chiave elettronica.
La seconda mostra come utilizzare una chiave elettronica personalizzata al posto di un oggetto chiave elettronica di Fortnite esistente, inoltre utilizza Verse per determinare se il giocatore possiede la chiave elettronica personalizzata.
Per creare la stanza di esempio, puoi utilizzare i seguenti asset di Fortnite:
Stanza: in Esplora contenuti, vai su Fortnite > Asset graybox > Demo. Questo esempio utilizza gli asset DemoRoom.
Cabina demo: in Esplora contenuti, vai su Fortnite > Asset graybox > Demo. Utilizza l'asset DemoDisplay.
Porte:
Porta nel muro verde: vai a Fortnite > Gallerie > Edificio > Galleria muro Pinnacoli Pendenti N. Trova la Porta interna suburbana C 02 a8a9d603 alla fine della prima riga.
Porta nel muro marrone chiaro con rifinitura scura nella parte superiore: nella stessa galleria menzionata, appena a sinistra si trova la porta interna suburbana C 02 a9577d9d.
Tabella: vai su Fortnite > Oggetti scenografici > Super. Trova la tavola rotonda accademica A 13a04066.
Configurare i dispositivi
Dispositivi necessari:
1 Generatore di giocatori
2 x dispositivi di blocco
1 x dispositivo Pulsante condizionale
2 x dispositivi Volume
1 x posizionatore oggetti (oggetto chiave elettronica autorità)
Configurazione della porta per una chiave elettronica di Fortnite
Scegli una porta per impostare una tipica porta chiusa a chiave di Fortnite. Segui questi step per impostare i dispositivi per la prima porta.
Posiziona un dispositivo Blocco sulla parete accanto alla porta. Nel pannello Dettagli, personalizza le opzioni del dispositivo come mostrato di seguito. Le opzioni non elencate possono essere lasciate ai propri valori predefiniti.
Opzione
Valore
Spiegazione
Visibile in gioco
Falso (non selezionato)
Nasconde il dispositivo Blocco quando il gioco è in corso, in modo che i giocatori non lo vedano.
Inizia bloccata
Bloccato
In questo modo la porta sarà bloccata all'inizio della partita.
Nascondi interazione quando bloccata
Vero (selezionato)
Nasconde il prompt di interazione quando la porta è bloccata.
Posizione iniziale porta
Chiuso
Definisce la posizione iniziale predefinita della porta come Chiusa.
In Opzioni utente - Funzioni, imposta le seguenti funzioni per il dispositivo Blocco.
Potresti non essere in grado di impostare la funzione Blocco fino a quando non avrai posizionato il dispositivo Volume al passaggio 3.
Funzione
Dispositivo di destinazione
Evento da associare
Spiegazione
Sblocca
Pulsante condizionale
Quando attivato
La porta è sbloccata quando si attiva il pulsante condizionale.
Blocco
Volume
All'uscita
La porta è bloccata quando il giocatore esce dal Volume la porta dei dispositivi Fortnite.
Posiziona un dispositivo Volume al centro della porta stessa. Nel pannello Dettagli, personalizza le opzioni del dispositivo come mostrato di seguito. Le opzioni non elencate possono essere lasciate ai propri valori predefiniti.
Opzione
Valore
Spiegazione
Forma volume
Cilindro
Questo determina la forma del volume.
Altezza volume
0,25x
Determina l'altezza del cilindro del volume.
Raggio volume
0,9x
Imposta il raggio del cilindro del volume, che determina quanto è vicino o lontano dalla posizione del dispositivo. Il raggio deve essere relativamente piccolo, per questo il giocatore deve avvicinarsi alla porta per entrare nel volume.
Posiziona il dispositivo Pulsante condizionale accanto alla porta, sotto il dispositivo Blocco. Personalizza l'opzione come indicato di seguito. Le opzioni non elencate possono essere lasciate ai propri valori predefiniti.
Opzione
Valore
Spiegazione
Oggetti chiave richiesti
Vero (selezionato), 1
Seleziona questa opzione per indicare che un oggetto chiave è necessario per superare la condizione. Inserisci 1 nel campo per indicare che è richiesta una sola chiave elettronica.
Oggetto chiave 1
Chiave elettronica autorità (nome in gioco) o AGID_CP_Keycard_Agency (ID oggetto)
Per selezionare l'oggetto desiderato, fai clic sul menu a discesa e cerca "chiave elettronica". Esistono diversi oggetti chiave elettronica, ma questo esempio utilizza un oggetto "Chiave elettronica autorità".
In Opzioni utente - Funzioni, imposta le seguenti funzioni per il dispositivo Pulsante condizionale.
Funzione
Dispositivo di destinazione
Evento da associare
Spiegazione
Attiva
Volume
All'ingresso
Quando il giocatore accede al volume per la porta dei dispositivi Fortnite, il pulsante condizionale si attiva. Controlla se il giocatore ha la Chiave elettronica autorità.
Impostazione della porta per la chiave elettronica personalizzata
Per la seconda porta, segui questi step per impostare i dispositivi.
Poiché le opzioni per entrambi i dispositivi Blocco sono le stesse, puoi copiare il primo dispositivo Blocco e incollare la copia nel tuo livello. Puoi rinominare il dispositivo per distinguerlo dal primo.
In Opzioni utente - Funzioni, imposta le seguenti funzioni per il dispositivo Blocco.
Potresti non essere in grado di impostare questa funzione fino a quando non avrai posizionato il Generatore Giocatore (link di ancoraggio qui a quella sezione).
Funzione
Dispositivo di destinazione
Evento da associare
Spiegazione
Blocco
Pedana di generazione giocatore 1
Quando un giocatore viene generato
Quando un giocatore si genera dalla pedana di generazione Giocatore 1, il dispositivo Blocco attiva e blocca la porta.
Le opzioni per entrambi i dispositivi Volume sono le stesse, quindi puoi anche copiare il primo volume e incollare la copia nel tuo livello. Puoi rinominare il dispositivo per distinguerlo dal primo.
Impostazione del tavolo per le chiavi elettroniche
Segui questi passaggi per impostare il tavolo con la chiave elettronica di Fortnite e la tua chiave elettronica personalizzata.
Colloca il dispositivo Posizionatore oggetti sul lato del tavolo più vicino alla porta bloccata che utilizza solo dispositivi.
Nel pannello Dettagli, personalizza le opzioni del dispositivo Posizionatore oggetti come mostrato di seguito.
Opzione
Valore
Spiegazione
Elenco oggetti
Chiave elettronica dell'Autorità
Fai clic su + per aggiungere un oggetto dell'array, quindi fai clic sul menu a discesa e cerca "chiave elettronica". Quindi seleziona l'oggetto Chiave elettronica autorità.
Individua l'oggetto chiave elettronica personalizzato in Esplora contenuti e trascinalo nel livello. Posiziona la chiave elettronica personalizzata sul tavolo, dal lato più vicino alla porta chiusa con impostazione correlata.
Una volta creato keycard_gameplay_device (aggiungi qui il link di ancoraggio), individua il dispositivo Verse in Esplora contenuti e trascinalo nel tuo livello.
Configurazione del Generatore giocatore
Infine, dovrai posizionare un Generatore giocatore. Per questo esempio, è necessario un solo generatore di giocatori. Tuttavia, se crei un gioco con più giocatori, puoi seguire questi passaggi per la configurazione. In alternativa, puoi impostarli in modo diverso in base alla tua particolare esperienza sull'isola.
Posiziona il Generatore giocatore in un punto in cui il giocatore possa vedere immediatamente il tavolo e le due porte.
Personalizza le opzioni del dispositivo come mostrato di seguito.
Opzione
Valore
Spiegazione
Visibile in gioco
Falso (non selezionato)
In questo esempio, il Generatore giocatore è invisibile.
Ora che hai impostato la tua stanza e i tuoi dispositivi, puoi creare la chiave elettronica personalizzata.
Crea un prefab di entità oggetto personalizzato
In Esplora contenuti, fai clic con il pulsante destro del mouse per aprire il menu contestuale e seleziona Entità definizione prefab. In questo modo viene aggiunto un nuovo prefab di entità Scene Graph a Esplora contenuti.
Rinomina la Item_Keycard prefab.
Trascina un'istanza del nuovo prefab nel mondo portandola nella viewport. In questo modo diventa selezionabile nell'Outliner.
Con il prefab Item_Keycard selezionato, nel pannello Dettagli fai clic su +Componente e seleziona item_component. Puoi scorrere l'elenco per trovarlo oppure digitare "oggetto" nella barra di ricerca per limitare i risultati e trovarlo più rapidamente.
Fai di nuovo clic su +Componente e seleziona item_details_component. Questo componente memorizza i dati di testo relativi all'oggetto.
Il componente item_details presenta tre campi di proprietà visualizzati nel pannello Dettagli: Nome, Descrizione e ShortDescription. Inserisci un nome, una descrizione dell'oggetto e una breve etichetta descrittiva in questi campi.
Fai di nuovo clic su +Componente e seleziona item_icon_component.
Nel pannello Dettagli, espandi item_icon_component. Devi selezionare un'immagine 2D, che sarà l'immagine visualizzata nell'interfaccia utente del gioco (ad esempio, nell'inventario dei giocatori) per rappresentare l'oggetto.
Fai clic sul menu a discesa accanto alla casella Nessuno per aprire un menu contestuale e digita parte del nome della tua immagine nella barra di ricerca. In questo esempio, utilizziamo un'immagine PNG denominata T_Icon_Keycard.png.
Seleziona l'immagine nei risultati della ricerca.
Fai di nuovo clic su +Componente e seleziona mesh_component. Per questo esempio, seleziona Piano.
In questo modo verrà aggiunta una mesh piana al tuo oggetto. A seconda delle impostazioni, questo piano potrebbe essere molto grande inizialmente. Segui i passaggi per ridimensionare il piano in modo che abbia le dimensioni di una chiave elettronica.
Nella barra degli strumenti, nella parte superiore della viewport, seleziona lo strumento Scalatura. Puoi anche premere il tasto R per passare allo strumento Scalatura.
A destra dello strumento Scalatura, fai clic sul menu a discesa dell'impostazione Rapporto preimpostato per la scalatura. Impostalo su 0,0625. Ciò ti permette di ridurre il piano a una dimensione molto piccola, in modo da rappresentare una chiave elettronica.
Fai di nuovo clic su +Componente e seleziona fort_item_pickup_component. L'aggiunta di questo componente aggiunge tutte le funzionalità degli oggetti di Fortnite:
Un'animazione per raccogliere un oggetto e un'animazione per rilasciarlo
Interazione per aggiungere un oggetto all'inventario
Un widget oggetto predefinito che viene visualizzato quando un giocatore guarda l'oggetto
La mesh dell'oggetto è disabilitata quando un oggetto viene raccolto
La mesh dell'oggetto viene abilitata quando un oggetto viene rilasciato
Ora che hai una chiave elettronica prefab personalizzata di base, puoi creare un componente Verse personalizzato che renderà questo oggetto univoco, in modo che possa essere controllato con il codice Verse per vedere se apre una determinata porta bloccata.
Crea un componente Verse personalizzato
Normalmente, per un progetto di grandi dimensioni con molti file di Verse, devi creare un nuovo file di Verse per un componente personalizzato. Per farlo, segui questi step.
Poiché l'esempio di questo tutorial è di piccole dimensioni, il keycard_item_component personalizzato è stato definito nel file di Verse per il keycard_gameplay_device personalizzato. Per conoscere questi step, vedi la sezione Scrivere il codice Verse per il gameplay.
Con il nuovo oggetto chiave elettronica selezionato, nel pannello Dettagli fai clic su +Componente e seleziona Nuovo componente Verse. Si apre la finestra Crea componente Verse.
Puoi creare un componente Verse anche aggiungendo un nuovo file Verse tramite Verse Explorer.
In Scegli un modello, seleziona Componente Scene Graph.
In basso, nel campo Nome componente, digita keycard_item_component. Quindi fai clic su Crea.
Nel pannello Dettagli, fai clic su +Componente e digita "chiave elettronica" nella barra di ricerca. Dovresti vedere il tuo nuovo componente Verse in elenco, selezionalo per aggiungerlo al tuo oggetto chiave elettronica personalizzato.
Nella barra del menu, fai clic su Verse > Verse Explorer. Individua il nuovo componente Verse, fai clic con il pulsante destro del mouse e seleziona Apri in Visual Studio Code.
Scrivi il codice Verse per il gameplay
Poiché stai creando un oggetto personalizzato (la chiave elettronica) e vuoi attivare un dispositivo quando il giocatore ha la chiave elettronica personalizzata nel proprio inventario, devi creare un dispositivo Verse per farlo.
Nella Barra del menu, vai su Verse > Verse Explorer. Verse Explorer si apre in una scheda accanto all'Outliner.
In Verse Explorer, fai clic con il pulsante destro del mouse sul nome del tuo progetto e scegli Aggiungi nuovo file di Verse al progetto per aprire la finestra Crea script Verse.
Nella finestra Crea script Verse in Scegli un modello, fai clic su Dispositivo Verse per selezionarlo. Nel campo Nome dispositivo, digita keycard_gameplay_device. Quindi fai clic su Crea per creare il file Verse.
In Verse Explorer, fai doppio clic sul nuovo dispositivo Verse per aprire il file in Visual Studio (VS) Code. Assicurati che nelle prime righe di codice siano aggiunti tutti gli elementi seguenti.
Verseusing { /Fortnite.com/Devices } using { /Fortnite.com/Itemization } using { /Verse.org/Simulation } using { /Verse.org/SceneGraph } using { /Verse.org/Random } using { /UnrealEngine.com/Itemization } using { /UnrealEngine.com/Temporary/Diagnostics }Quindi, aggiungi il codice che definisce il tuo componente oggetto personalizzato.
Verse# KEYCARD ITEM COMPONENT keycard_item_component := class(item_component) :Possiamo aggiungere una funzione di aiuto che ci permetterà di trovare l'inventario radice dell'agente obiettivo:
Verse# Helper function that gets the first descendant inventory component from an agent. # This will be the root inventory. GetAgentInventory(Agent:agent)<decides><transacts>:inventory_component= TargetInventory := (for (I : Agent.FindDescendantComponents(inventory_component)) { I })[0]Quindi, definisci il tuo dispositivo Verse personalizzato come una sottoclasse di
creative_device.Imposta una proprietà modificabile per i dispositivi Volume e Blocco. Ciò ti permette di selezionare una particolare istanza del dispositivo Volume o Blocco nell'editor (importante dato che hai due dispositivi Volume e due dispositivi Blocco).Verse# DEVICE //// GAMEPLAY keycard_gameplay_device := class(creative_device) : # Use a volume_device to be able to check when a player approaches @editable VolumeDevice:?volume_device = false # The lock device is attached to a wall/door prop. This can be activated to lock/unlock the door it is attached to. @editable LockDevice:?lock_device = falseOra utilizzerai la query per vedere se il dispositivo Volume è presente e iscriverai agli eventi On Agent Enters e On Agent Exits del dispositivo Volume.
Verse# Subscribe to the entry and exit events on the Volume to determine when a player/agent approaches. OnBegin<override>()<suspends>:void= if: TargetVolume := VolumeDevice? then: TargetVolume.AgentEntersEvent.Subscribe(OnAgentEntersEvent) TargetVolume.AgentExitsEvent.Subscribe(OnAgentExitsEvent)Controlla l'inventario del giocatore per vedere se possiede la chiave elettronica personalizzata nel suo inventario. Puoi controllare qualsiasi elemento con
keycard_item_component. Questo codice richiede anche chekeycard_item_componentsia presente per aprire il dispositivo Blocco.VerseOnAgentEntersEvent(Agent:agent):void= # Get the inventory from the player that is entering. if(TargetInventory := GetAgentInventory[Agent]): # Check the item in the inventory, if it has the keycard_item_component, proceed for(item : TargetInventory.FindItems(), KeycardComponent := item.GetComponent[keycard_item_component]) # If there is a valid lock_device, then this opens the door. if(TargetDoorLock := LockDevice?):Infine, se è presente più di un Giocatore e uno di loro ha la chiave elettronica, questo codice farà in modo che il lucchetto rimanga aperto. Tuttavia, se il giocatore con la chiave elettronica esce dal volume, il Blocco si chiude di nuovo.
VerseOnAgentExitsEvent(Agent:agent):void= # Start by assuming that no one has the required keycard_item_component. var AgentWithKeycardInVolume:logic = false if(TargetVolume := VolumeDevice?): # Get the Agents that are inside the volume_device as an array. for(TargetAgent:TargetVolume.GetAgentsInVolume()): # Use the same check to see if any of the agents in the volume_device have a keycard_item_component.
Di seguito puoi trovare lo snippet di codice Verse completo.
using { /Fortnite.com/Devices }
using { /Fortnite.com/Itemization }
using { /Verse.org/Simulation }
using { /Verse.org/SceneGraph }
using { /UnrealEngine.com/Itemization }
using { /UnrealEngine.com/Temporary/Diagnostics }
# KEYCARD ITEM COMPONENT
keycard_item_component := class(item_component) :