このステップでは、ゲームの開始時にプレイヤーに武器を割り当てる方法について説明します。
プレイヤーが初めてスポーンされるときに、WeaponGranters 配列の最初の武器を付与します。そのためには、各プレイヤー スポーン パッドに関数をサブスクライブする必要があります。サブスクライブ可能なイベントの詳細については、「仕掛けのインタラクションをコード化する」ページを参照してください。
次の手順に従ってプレイヤー スポーン イベントをサブスクライブし、最初の武器を割り当てます。
-
新しいメソッド
OnPlayerSpawn()をteam_elimination_gameクラスに追加します。このメソッドでは、最初のスポーン時、および再スポーン時に適切な武器がプレイヤーに割り当てられるようにします。OnPlayerSpawn(InPlayer : agent) : void = Print("A Player just spawned!") -
設定したばかりの関数を、関連付けられているイベントにサブスクライブするには、新しいコードを
OnBegin()に追加する必要があります。OnPlayerSpawnを使用して各プレイヤー スポナーのSpawnedEventにサブスクライブするforループを作成します。OnBegin<override>()<suspends> : void = # すべてのプレイヤーを取得します。 set Teams = GetPlayspace().GetTeamCollection().GetTeams() set EliminationsToEndGame = WeaponGranters.Length Print("Number of eliminations to end game is {EliminationsToEndGame}") for (Spawner : PlayerSpawners): Spawner.SpawnedEvent.Subscribe(OnPlayerSpawn) # 各プレイヤー スポーン パッドにサブスクライブします -
プレイヤーに最初の武器を付与するには、
WeaponGranters配列の最初のアイテム グランターにアクセスする必要があります。この操作は、新しく作成するメソッドで行います。- 新しいメソッド
GrantWeaponをteam_elimination_gameクラスに追加します。このメソッドではエージェントoptionを取得し、指定されたWeaponTierに基づいて武器を割り当てます。
GrantWeapon(InPlayer : ?agent,WeaponTier : int) : void= Print("Granting Player a weapon of Tier {WeaponTier}")GrantWeapon内で、WeaponTierをインデックスとして使用してWeaponGranters配列にある適切なアイテム グランターにアクセスします。InPlayer内の値にアクセスし、それを変数GrantedPlayerに格納します。
GrantWeapon(InPlayer : ?agent,WeaponTier : int) : void= Print("Granting Player a weapon of Tier {WeaponTier}") if(ItemGranter := WeaponGranters[WeaponTier], GrantedPlayer := InPlayer?):ItemGranter.GrantItemを使用して、プレイヤーに適切な武器を付与します。WeaponTierをログに記録することによって、どの武器が付与されたかを確認できます。GrantWeaponのコードは次のようになっているはずです。
GrantWeapon(InPlayer : ?agent,WeaponTier : int) : void= Print("Granting Player a weapon of Tier {WeaponTier}") if(ItemGranter := WeaponGranters[WeaponTier], GrantedPlayer := InPlayer?): ItemGranter.GrantItem(GrantedPlayer) - 新しいメソッド
-
GrantWeaponを呼び出すように、OnPlayerSpawnを変更します。プレイヤーがスポーンされるときに、整数WeaponTierがWeaponGranters配列内の最初のアイテム グランターのインデックスになるように 0 に初期化し、GrantWeaponにWeaponTierとプレイヤーへの参照を渡して呼び出します。OnPlayerSpawnのコードは次のようになっているはずです。OnPlayerSpawn(InPlayer : agent) : void= Print("A player just spawned!") WeaponTier : int = 0 GrantWeapon(option{InPlayer}, WeaponTier) Print("Spawned Player was granted a gun of tier {WeaponTier}") -
Visual Studio Code でスクリプトを保存してコンパイルし、UEFN ツールバーの [Launch Session] をクリックしてレベルをプレイテストします。レベルをプレイテストするときは、
WeaponGranters配列内の最初の武器をスポーンする必要があります。この動作をログで確認してください。
次のステップ
このチュートリアルの 次のステップ では、マップを使用してプレイヤーを追跡する方法と、これらのマップをゲームの開始時に配置する方法について学びます。