Questo passaggio ti illustra come assegnare un'arma a un giocatore all'inizio della partita.
Quando un giocatore si genera per la prima volta, gli viene assegnata la prima arma dell'array WeaponGranters
. Per fare sì che ciò accada, dovrai sottoscrivere le funzioni a ogni pedana di generazione giocatore. Per maggiori dettagli sugli eventi a cui è possibile sottoscriversi, vedi Codifica delle interazioni con i dispositivi.
Per sottoscriverti agli eventi di generazione dei giocatori e per assegnare loro la prima arma, attieniti alla seguente procedura.
-
Aggiungi un nuovo metodo
OnPlayerSpawn()
alla classeteam_elimination_game
. Questo metodo assicura di assegnare al giocatore l'arma giusta quando si genera per la prima volta e quando si rigenera.OnPlayerSpawn(InPlayer : agent) : void = Print("Un giocatore è stato appena generato!")
-
Per sottoscrivere le funzioni appena impostate agli eventi associati ai giocatori, devi aggiungere nuovo codice a
OnBegin()
. Crea un loopfor
per sottoscrivere l'eventoSpawnedEvent
di ciascun giocatore, utilizzandoOnPlayerSpawn
.OnBegin<override>()<suspends> : void = # Ottieni tutti i giocatori set Teams = GetPlayspace().GetTeamCollection().GetTeams() set EliminationsToEndGame = WeaponGranters.Length Print("Il numero di eliminazioni necessario per concludere la partita è {EliminationsToEndGame}") for (Spawner : PlayerSpawners): Spawner.SpawnedEvent.Subscribe(OnPlayerSpawn) # Sottoscrivi a ciascuna pedana di generazione giocatore
-
Per assegnare ai giocatori la prima arma, è necessario accedere al primo assegnatore oggetti nell'array
WeaponGranters
. Eseguirai questa operazione con un nuovo metodo.- Aggiungi un nuovo metodo
GrantWeapon
alla classeteam_elimination_game
. Questo metodo prende un'option
agente e gli assegna un'arma in base alWeaponTier
fornito.
GrantWeapon(InPlayer : ?agent, WeaponTier : int) : void= Print("Conferimento al giocatore di un'arma di livello {WeaponTier}")
- All'interno di
GrantWeapon
, accedi all'assegnatore oggetti appropriato dell'arrayWeaponGranters
utilizzandoWeaponTier
come indice. Accedi al valore all'interno diInPlayer
e memorizzalo in una variabileGrantedPlayer
.
GrantWeapon(InPlayer : ?agent, WeaponTier : int) : void= Print("Conferimento al giocatore di un'arma di livello {WeaponTier}") if(ItemGranter := WeaponGranters[WeaponTier], GrantedPlayer := InPlayer?):
- Assegna al giocatore l'arma appropriata utilizzando
ItemGranter.GrantItem
. Puoi verificare quale arma è stata assegnata registrando ilWeaponTier
. Il codiceGrantWeapon
dovrebbe essere simile al codice seguente.
GrantWeapon(InPlayer : ?agent, WeaponTier : int) : void= Print("Conferimento al giocatore di un'arma di livello {WeaponTier}") if(ItemGranter := WeaponGranters[WeaponTier], GrantedPlayer := InPlayer?): ItemGranter.GrantItem(GrantedPlayer)
- Aggiungi un nuovo metodo
-
Modifica
OnPlayerSpawn
per chiamareGrantWeapon
. Quando un giocatore si genera, inizializza un interoWeaponTier
con il valore zero per riflettere l'indice del primo assegnatore oggetti nell'arrayWeaponGranters
, quindi chiamaGrantWeapon
passandoWeaponTier
e un riferimento al giocatore. Il codiceOnPlayerSpawn
dovrebbe essere simile al codice seguente.OnPlayerSpawn(InPlayer : agent) : void= Print("Un giocatore è stato appena generato!") WeaponTier : int = 0 GrantWeapon(option{InPlayer}, WeaponTier) Print("Al giocatore generato è stata conferita una pistola di livello {WeaponTier}")
-
Salva lo script in Visual Studio Code, compilalo e fai clic su Avvia sessione nella barra degli strumenti UEFN per eseguire il playtest del livello. Quando esegui il playtest del tuo livello, dovresti far generare la prima arma nell'array
WeaponGranters
. Verifica questo comportamento con il registro.
Passaggio successivo
Nel passaggio successivo di questo tutorial, imparerai a monitorare i giocatori utilizzando le mappe e a popolarle quando inizia la partita.