이제 팀별로 플레이어를 밸런싱했으므로 각 팀의 밸런싱에 따른 적절한 무기를 지급할 수 있습니다. 플레이어 생성 시 적합한 무기를 지급하는 방법을 살펴보려면 다음 단계를 따릅니다.
팀에 따라 무기 지급하기
triad_infiltration_game클래스 정의에서GrantTeamWeapon()으로 명명된 새 함수를 추가합니다. 이 함수는 플레이어의 팀에 따라 무기를 지급합니다.GrantTeamWeapon(InPlayer:player):void=GrantTeamWeapon()에서 지정된 플레이어의 팀을 구합니다. 그리고for루프에서Teams배열의 각 팀을 대상으로 반복작업하여 해당 팀의 인덱스를 구해TeamIndex변수에 저장합니다. 지정된 플레이어의 팀이for루프에서 필터 조건으로 이 팀과 일치하는지 확인합니다.GrantTeamWeapon(InPlayer:player):void= if(CurrentTeam := GetPlayspace().GetTeamCollection().GetTeam[InPlayer]): for(TeamIndex -> PlayerTeam:Teams, PlayerTeam = CurrentTeam):- 필터 조건은
for루프 내 코드가 올바른 팀에서 실행되도록 보장하므로, 해당 팀의TeamIndex를 사용하여WeaponGranters로 인덱싱하여 팀별로 올바른 아이템 지급 장치를 얻습니다. 마지막으로, 지정된 플레이어를 사용하여GrantItem()을 호출합니다.GrantTeamWeapon()코드는 다음과 같게 됩니다.# WeaponGranters 배열에 인덱싱하는 방식으로 # 팀 배열에 있는 팀 인덱스에 따라 무기를 지급합니다. GrantTeamWeapon(InPlayer:player):void= if(CurrentTeam := GetPlayspace().GetTeamCollection().GetTeam[InPlayer]): for(TeamIndex -> PlayerTeam:Teams, PlayerTeam = CurrentTeam): if(WeaponGranter := WeaponGranters[TeamIndex]): WeaponGranter.GrantItem(InPlayer) Logger.Print("Granted a Player on team {TeamIndex + 1} a weapon")Teams의 팀 순서가WeaponGranters의 아이템 지급 장치 순서와 일치하는지 확인합니다. 침투 팀이 팀 1이라면WeaponGranters도 침투 팀을 위한 것이어야 합니다. 이 값이 정확한지 에디터에서 다시 한번 확인합니다.
플레이어 생성 시 무기 지급하기
triad_infiltration_game클래스 정의에서OnPlayerSpawn()이라는 새 함수를 추가합니다. 이 함수는agent를 취하고 이를 사용하여GrantTeamWeapon()을 호출함으로써 플레이어에게 적합한 무기를 지급합니다.OnPlayerSpawn(SpawnedAgent:agent):void=OnPlayerSpawn()에서SpawnedAgent를player로 형변환합니다. 그런 다음 플레이어를 전달하는GrantTeamWeapon()을 호출합니다.OnPlayerSpawn()함수는 다음과 같게 됩니다.# 어떤 플레이어든 생성 패드에서 생성될 때 실행합니다. # 제공된 SpawnedAgent를 사용하여 GrantTeamWeapon을 호출합니다. OnPlayerSpawn(SpawnedAgent:agent):void= if(SpawnedPlayer := player[SpawnedAgent]): Logger.Print("Attempting to grant spawned player a weapon") GrantTeamWeapon(SpawnedPlayer)OnBegin()에서BalanceTeams()를 호출하기 전에for루프를 사용하여 각 플레이어 스포너의SpawnedEvent를 방금 정의했던OnPlayerSpawn()함수에 등록합니다.OnBegin<override>()<suspends>:void = # 팀을 모두 구합니다. set Teams = GetPlayspace().GetTeamCollection().GetTeams() # 나중에 레퍼런스하기 위해 팀을 저장합니다. set InfiltratorsOpt = option{Teams[0]} set AttackersOpt = option{Teams[1]} set DefendersOpt = option{Teams[2]} if: Infiltrators := InfiltratorsOpt? Attackers := AttackersOpt? Defenders := DefendersOpt? Logger.Print("Found all three teams") set TeamsAndTotals[Infiltrators] = MaximumInfiltrators set TeamsAndTotals[Attackers] = MaximumAttackers set TeamsAndTotals[Defenders] = MaximumDefenders Logger.Print("Set all three teams in TeamsAndTotals") then: #새 플레이어가 게임 합류 시 팀 밸런싱을 재조정할 수 있도록 PlayerAddedEvent에 등록합니다. for(PlayerSpawner:PlayersSpawners): PlayerSpawner.SpawnedEvent.Subscribe(OnPlayerSpawn) BalanceTeams() TeleportPlayersToStartLocations() else: Logger.Print("Couldn't find all teams, make sure to assign the correct teams in your island settings.")-
스크립트를 저장하고 빌드한 후 UEFN 툴바에서 세션 시작(Launch Session) 을 클릭하여 레벨을 플레이테스트합니다. 레벨을 플레이테스트할 때 각 플레이어는 가장 큰 차이를 보이는 팀에 소속되어 팀에 적합한 무기를 갖추고 생성되어야 합니다. 로그를 사용하여 이 행동을 확인합니다.
다음 단계
이 튜토리얼의 다음 단계에서는 침투 팀의 캐릭터 생성 시 그리고 게임 시작 시 투명하게 만드는 방법을 살펴봅니다.