Este paso muestra cómo asignar un arma a un jugador al inicio de la partida.
Cuando un jugador aparece por primera vez, concédele la primera arma de la matriz WeaponGranters . Para ello, tendrás que suscribir funciones a cada plataforma de aparición de jugador. Consulta la página Codificación de las interacciones de los dispositivos para más detalles sobre los eventos suscribibles.
Sigue estos pasos para suscribirte a los eventos de aparición de jugadores y asignarles su primera arma.
-
Añade un nuevo método
OnPlayerSpawn()a la claseteam_elimination_game. Este método te asegura que asignas al jugador el arma correcta cuando aparece por primera vez, y cuando vuelve a aparecer.OnPlayerSpawn(InPlayer : agent) : void = Print("¡Acaba de aparecer un jugador!") -
Para suscribir las funciones que acabas de configurar a sus eventos asociados, tienes que añadir nuevo código a
OnBegin(). Crea un bucleforpara suscribirte aSpawnedEventde cada jugador medianteOnPlayerSpawn.OnBegin<override>()<suspends> : void = # Obtiene todos los jugadores set Teams = GetPlayspace().GetTeamCollection().GetTeams() set EliminationsToEndGame = WeaponGranters.Length Print("El número de eliminaciones para terminar la partida es {EliminationsToEndGame}") para (Spawner : PlayerSpawners): Spawner.SpawnedEvent.Subscribe(OnPlayerSpawn) # Suscribirse a cada plataforma de aparición de jugador -
Para conceder a los jugadores la primera arma, debes acceder al primer repartidor de objetos de la matriz
WeaponGranters. Lo harás a través de un nuevo método.- Añade un nuevo método
GrantWeapona la claseteam_elimination_game. Este método toma unoptionde agente y le asigna un arma basándose en elWeaponTierproporcionado.
GrantWeapon(InPlayer : ?agent, WeaponTier : int) : void= Print("Concediendo al jugador un arma de nivel {WeaponTier}")- Dentro de
GrantWeapon, accede al repartidor de objetos adecuado desde la matrizWeaponGrantersutilizandoWeaponTiercomo índice. Accede al valor dentro deInPlayery guárdalo en una variableGrantedPlayer.
GrantWeapon(InPlayer : ?agent, WeaponTier : int) : void= Print("Concediendo al jugador un arma de nivel {WeaponTier}") if(ItemGranter := WeaponGranters[WeaponTier], GrantedPlayer := InPlayer?):- Concede al jugador el arma adecuada utilizando
ItemGranter.GrantItem. Puedes verificar qué arma se concedió registrando elWeaponTier. Tu códigoGrantWeapondebe parecerse al código siguiente.
GrantWeapon(InPlayer : ?agent, WeaponTier : int) : void= Print("Concediendo al jugador un arma de nivel {WeaponTier}") if(ItemGranter := WeaponGranters[WeaponTier], GrantedPlayer := InPlayer?): ItemGranter.GrantItem(GrantedPlayer) - Añade un nuevo método
-
Modifica
OnPlayerSpawnpara llamar aGrantWeapon. Cuando aparece un jugador, inicializa un entero "WeaponTier" a cero para reflejar el índice del primer repartidor de objetos de la matriz "WeaponGranters", y luego llama a "GrantWeapon" pasándole "WeaponTier" y una referencia al jugador. Tu códigoOnPlayerSpawndebe parecerse al código siguiente.OnPlayerSpawn(InPlayer : agent) : void= Print("¡Acaba de aparecer un jugador!") WeaponTier : int = 0 GrantWeapon(option{InPlayer}, WeaponTier) Print("Al jugador generado se le ha concedido un arma de nivel {WeaponTier}") -
Guarda la secuencia de comandos en Visual Studio Code, compílala y haz clic en Iniciar sesión en la barra de herramientas de UEFN para probar el nivel. Cuando pruebes tu nivel, deberías aparecer con la primera arma de la matriz
WeaponGranters. Comprueba este comportamiento con el registro.
Siguiente paso
En el siguiente paso de este tutorial, aprenderás a rastrear a los jugadores mediante mapas y a rellenar esos mapas cuando empiece el juego.