Este paso muestra cómo asignar un arma a un jugador al comienzo del juego.
Cuando un jugador aparece por primera vez, otórgale la primer arma de la matriz WeaponGranters. Para ello, debes suscribir funciones a cada plataforma de aparición de jugador. Consulta la página Cómo escribir código para la interacción entre dispositivos para obtener más información sobre los eventos suscribibles.
Realiza estos pasos para suscribir a eventos de aparición de jugador y asignar la primer arma.
-
Añade un nuevo método
OnPlayerSpawn()a la claseteam_elimination_game. Este método garantiza que se asignará al jugador el arma correcta cuando aparece por primera vez y cuando reaparece.OnPlayerSpawn(InPlayer : agent) : void = Print("¡Se generó un jugador!") -
Para suscribir las funciones que configuraste a los eventos asociados, debes añadir nuevo código a
OnBegin(). Crea un bucleforpara suscribir alSpawnedEventde aparición de cada jugador medianteOnPlayerSpawn.OnBegin<override>()<suspends> : void = # Obtiene todos los jugadores set Teams = GetPlayspace().GetTeamCollection().GetTeams() set EliminationsToEndGame = WeaponGranters.Length Print("Cantidad de eliminaciones necesarias para terminar la partida: {EliminationsToEndGame}") for (Spawner : PlayerSpawners): Spawner.SpawnedEvent.Subscribe(OnPlayerSpawn) # Suscribe a cada una de las plataformas de aparición de jugador -
Para otorgar a los jugadores su primera arma, debes acceder al primer repartidor de objetos en la matriz
WeaponGranters. Lo harás mediante un nuevo método.- Añade un nuevo método
GrantWeapona la claseteam_elimination_game. Este método toma un agenteoptiony le asigna un arma con base en elWeaponTierbrindado.
GrantWeapon(InPlayer : ?agent, WeaponTier : int) : void= Print("Otorgando arma de nivel {WeaponTier} al jugador")- Dentro de
GrantWeapon, accede al repartidor de objetos apropiado de la matrizWeaponGrantersconWeaponTiercomo índice. Accede al valor dentro deInPlayery guárdalo en una variableGrantedPlayer.
GrantWeapon(InPlayer : ?agent, WeaponTier : int) : void= Print("Otorgando arma de nivel {WeaponTier} al jugador") if(ItemGranter := WeaponGranters[WeaponTier], GrantedPlayer := InPlayer?):- Otorga al jugador el arma apropiada con
ItemGranter.GrantItem. Puedes verificar qué arma se otorgó al registrar elWeaponTier. El código deGrantWeapondebería ser similar al siguiente.
GrantWeapon(InPlayer : ?agent, WeaponTier : int) : void= Print("Otorgando arma de nivel {WeaponTier} al jugador") if(ItemGranter := WeaponGranters[WeaponTier], GrantedPlayer := InPlayer?): ItemGranter.GrantItem(GrantedPlayer) - Añade un nuevo método
-
Modifica
OnPlayerSpawnpara llamar aGrantWeapon. Cuando aparece el jugador, inicializa unWeaponTierde entero a cero para reflejar el índice del primer repartidor de objetos de la matrizWeaponGranters; a continuación, llama aGrantWeaponpasandoWeaponTiery una referencia al jugador. El código deOnPlayerSpawndebería ser como el siguiente.OnPlayerSpawn(InPlayer : agent) : void= Print("¡Se generó un jugador!") WeaponTier : int = 0 GrantWeapon(option{InPlayer}, WeaponTier) Print("El jugador que apareció recibió una pistola de nivel {WeaponTier}") -
Guarda la secuencia de comandos en Visual Studio Code, compílala y haz clic en Comenzar sesión en la barra de herramientas de UEFN para realizar una prueba de juego en el nivel. Cuando pruebas el nivel, deberías aparecer con la primera arma de la matriz
WeaponGranters. Comprueba este comportamiento en el registro.
Próximo paso
En el próximo paso de este tutorial, aprenderás cómo realizar un seguimiento de los jugadores mediante mapas y cómo propagar dichos mapas cuando comienza el juego.