Deserted:Domination は、プレイヤーが 2 つのチームに分かれて対戦し、目標を確保するドミネーションスタイルのゲームです。このゲームプレイでは、キャプチャー エリア の仕掛けを使用します。さらに、Verse で作成したカスタムの仕掛けも使用します。
このチュートリアルに従うことにより、Unreal Editor for Fortnite (UEFN) で高度なゲームプレイを作成する方法を学習します。さらに、レベル シーケンス や ポスト プロセス などの Unreal Engine 5 (UE5) の機能について紹介します。
Verse および UE5 の機能を知るのに役立つリソースへの外部リンクや、その他の対象となるコンテンツを掲載しています。
Deserted は、プロジェクト ブラウザ の [Sample Projects (サンプル テンプレート)] セクションにあります。
次に示すのは、この島を作り直すのに必要な手順の概要です。
-
新規プロジェクトを作成し、島設定を変更 してゲームを設定します。
-
プレイヤーがスポーンするための Verse スクリプトを作成します。
-
コア ゲームプレイの仕掛けを追加し、カスタマイズします。
-
カスタム スポーン システムを追加します。
-
プレイヤーのロードアウトを追加します。
-
サウンド エフェクトを追加します。
-
視覚効果を追加します。
新規プロジェクトを作成する
新規プロジェクトの作成の詳細については、「プロジェクトの整理」ページをご覧ください。
島の設定を行うには、コンテンツ ドロワーから島設定の仕掛けを配置します。
その設定を、以下のようにカスタマイズします。
オプション | 設定値 | 説明 |
---|---|---|
Voice Chat (ボイス チャット) | All (すべて) | ボイス チャットをチーム内で許可するか、すべてのプレイヤー間で許可するか、まったく許可しないかを決定します。 |
Voice Chat Distance (ボイス チャットの距離) | 10.0 | タイル間距離で音声が聞こえる範囲をコントロールします。 |
Max Players (最大プレイヤー数) | 12 | ゲームに参加できる最大プレイヤー数を決定します。 |
Teams (チーム) | チーム インデックス - 2 | プレイヤーを振り分けるチーム数を決定します。 |
Team Size (チーム サイズ) | Split Evenly (均等に分割) | チーム間でのプレイヤーの分け方を決定します。 |
Default Class Identifier (デフォルト クラス ID) | クラス スロット - 1 | ゲーム開始時、またはクラス設定時のプレイヤーに対するデフォルト クラスを定義します。 |
Total Rounds (合計ラウンド) | 5 | ゲーム終了までにプレイするラウンド数を決定します。 |
Team Rotation (チームのローテーション) | True (オン) | チームがローテーションされる頻度を決定します。 |
Team Visuals Determined At (チームのビジュアル変更のタイミング) | Game Start (ゲーム開始) | チーム名と色をラウンドごとに変更するか、ゲーム開始時のままにするかを決定します。 |
Time Limit (制限時間) | 15.0 | 各ラウンドの持続時間 (1 ラウンドしかない場合はゲームの持続時間) を指定します。 |
Score to End (終了に必要なスコア) | 500 | プレイヤーまたはチームが指定のスコアを達成したときにラウンドを終了させます。 |
Only Allow Respawn if Spawn Pads Found (スポーン パッド発見時のみリスポーン可) | True (オン) | 有効なスポーン パッドが利用できる場合にのみ、プレイヤーのリスポーンを許可します。 |
Auto Start (自動スタート) | 30.0 | 選択した時間後に自動的にゲームを開始するかどうかを指定します。 |
Allow Spectating Other Teams (他のチームの観戦を許可) | True (オン) | 観戦しているプレイヤーが他のチームを観戦することができるかを決定します。 |
Elimination Score (撃破スコア) | 3.0 | 別のプレイヤーを撃破したときにプレイヤーに認められるスコア数を決定します。 |
Assist Score (アシスト スコア) | 1.0 | 別のプレイヤーを撃破するのをアシストしたときにプレイヤーに認められるスコア数を決定します。 |
Disable Player Collision (プレイヤーの当たり判定を無効にする) | True (オン) | プレイヤーたちがお互いにぶつかるか、すり抜けるかを設定します。 |
プレイヤーがスポーンするための Verse スクリプトを作成する
Verse を使用すると、プレイヤーが常にテリトリー内 (所有しているキャプチャー エリアまたは味方の近くのエリア) にプレイヤー スポナーを制御できます。これを行うには、標準のクリエイティブの仕掛けと Verse を組み合わせて利用します。
こちらの ページ に説明されているとおりに新規 Verse スクリプトを追加します。次に、以下を貼り付けます。
# Copyright Epic Games, Inc. All Rights Reserved.
using { /Fortnite.com/Devices }
using { /Fortnite.com/Teams }
using { /Verse.org/Simulation }
using { /Verse.org/Simulation/Tags }
## この仕掛けはプレイヤー スポナーを管理します
## 一連の初期スポナーが有効になります
## しばらくすると、初期のスポナーは無効になります
## そこから、各キャプチャー ポイントに関連付けられているチーム スポーンが、重み付けスコアに基づいて有効/無効になります
## ポイントを所有すると、重み付けスコアに 1 が加算されます (チーム 2 の場合は -1)
## エリア内に味方がいる場合、重み付けスコアに 1 が加算されます (チーム 2 の場合は -1)
## 重み付けスコアが 0 より大きい場合、チーム 1 はそのポイントの近くでスポーンすることができます。
## 重み付けスコアが 0 未満の場合、チーム 2 はポイントの近くでスポーンすることができます
##################################################################
## イベント ハンドラ クラス - キャプチャー ポイントごとに 1 つスポーンし、そのキャプチャー ポイントを使用してイベントをバインドします
##################################################################
capture_point_event_handler := class:
CapturePointIndex:int
DominationSpawnManagerRef:domination_spawn_manager
TeamCollectionRef:fort_team_collection
var CaptureWeightOfThisPoint:int = 0
var PlayerWeightOfThisPoint:float = 0.0
WeightForEachPlayer:float = 0.5
# チーム 1 の場合は 1 を返します。チーム 2 の場合は -1 を返します。
GetTeamDirectionOfAgent<private>(MyAgent:agent)<transacts>:int=
if (FirstTeam := TeamCollectionRef.GetTeams()[0]):
if (TeamCollectionRef.IsOnTeam[MyAgent, FirstTeam]):
return 1
return -1
# キャプチャー ポイントの状態を設定します
OnCaptured(MyAgent:agent):void=
set CaptureWeightOfThisPoint = GetTeamDirectionOfAgent(MyAgent)
DominationSpawnManagerRef.CalculateWeightForPoint(CapturePointIndex)
# プレイヤーの出入りに応じて、ポイントのプレイヤーの重み付けを変えます
PlayerEnteredLargeZone(MyAgent:agent):void=
set PlayerWeightOfThisPoint = PlayerWeightOfThisPoint + (GetTeamDirectionOfAgent(MyAgent) * WeightForEachPlayer)
DominationSpawnManagerRef.CalculateWeightForPoint(CapturePointIndex)
PlayerLeftLargeZone(MyAgent:agent):void=
set PlayerWeightOfThisPoint = PlayerWeightOfThisPoint - (GetTeamDirectionOfAgent(MyAgent) * WeightForEachPlayer)
DominationSpawnManagerRef.CalculateWeightForPoint(CapturePointIndex)
##################################################################
## ドミネーション スポーン マネージャー クラス
##################################################################
domination_spawn_manager := class(creative_device):
# プレイヤー スポナーの仕掛けグループ - Verse タグを検索して追加します
var SpawnPointGroupInitial:[]player_spawner_device = array{}
var SpawnPointGroupsCapPoint:[][]player_spawner_device = array{array{}, array{}, array{}}
# キャプチャー ゾーン
@editable
CapturePoints:[]capture_area_device = array{}
@editable
LargeZones:[]player_counter_device = array{}
# 初期スポナーは、この秒数が経過した後に無効になります
InitialGroupDisableTime:float = 5.0
# キャプチャー ポイント イベント ハンドラ クラスの参照
var CapturePointListeners:[]capture_point_event_handler = array{}
# OnBegin がゲーム開始時に実行されます
OnBegin<override>()<suspends>:void=
BeginPlayEventSubscriptions()
FindAndCacheSpawnDevices()
DisableInitialSpawnGroup()
# 属性トリガーからイベントをサブスクライブします
BeginPlayEventSubscriptions<private>():void=
for (I -> EachCapPoint:CapturePoints):
MyHandler := capture_point_event_handler:
CapturePointIndex := I
DominationSpawnManagerRef := Self
TeamCollectionRef := Self.GetPlayspace().GetTeamCollection()
set CapturePointListeners = CapturePointListeners + array{MyHandler}
EachCapPoint.ControlChangeEvent.Subscribe(MyHandler.OnCaptured)
if (EachLargeZone := LargeZones[I]):
EachLargeZone.CountedEvent.Subscribe(MyHandler.PlayerEnteredLargeZone)
EachLargeZone.RemovedEvent.Subscribe(MyHandler.PlayerLeftLargeZone)
# さまざまなプレイヤー スポナーの仕掛けをすべて取得し、適切な配列に格納します
FindAndCacheSpawnDevices<private>():void=
InitialSpawnPoints:[]creative_object_interface = GetCreativeObjectsWithTag(DominationSpawnTags.Tag_SpawnGroup_Initial{})
for (FoundDevice : InitialSpawnPoints, DeviceAsSpawner:= player_spawner_device[FoundDevice]):
set SpawnPointGroupInitial = SpawnPointGroupInitial + array{DeviceAsSpawner}
GroupTags:[]tag = array:
DominationSpawnTags.Tag_SpawnGroup_GroupA{}
DominationSpawnTags.Tag_SpawnGroup_GroupB{}
DominationSpawnTags.Tag_SpawnGroup_GroupC{}
for (I -> GroupTag:GroupTags):
FoundSpawnGroup:[]creative_object_interface := GetCreativeObjectsWithTag(GroupTag)
for (FoundDevice : FoundSpawnGroup, DeviceAsSpawner:= player_spawner_device[FoundDevice]):
if:
set SpawnPointGroupsCapPoint[I] = SpawnPointGroupsCapPoint[I] + array{DeviceAsSpawner}
# 初期スポーン ポイントをオフにします
DisableInitialSpawnGroup<private>()<suspends>:void=
Sleep(InitialGroupDisableTime)
for (SpawnPoint : SpawnPointGroupInitial):
SpawnPoint.Disable()
# ポイントの CapPointCaptureWeight または CapPointPlayerWeight が変更されるたびに、これを実行して、関連付けられているスポーン グループからスポーンすることが許可される必要のある人物を確認します
CalculateWeightForPoint(PointIndex:int):void=
var WeightOfPoint:int = 0
if:
CapPointData := CapturePointListeners[PointIndex]
CapPlayerWeightToInt := Floor[CapPointData.PlayerWeightOfThisPoint]
then:
set WeightOfPoint = CapPointData.CaptureWeightOfThisPoint + CapPlayerWeightToInt
for (SpawnDevice:SpawnPointGroupsCapPoint[PointIndex]):
var DeviceIsTeam1:logic = false
DeviceTags := SpawnDevice.GetTags()
if (DeviceTags.Has[DominationSpawnTags.Tag_TeamOwnership_Team1{}]):
set DeviceIsTeam1 = true
if (DeviceIsTeam1?):
if (WeightOfPoint > 0):
SpawnDevice.Enable()
else:
SpawnDevice.Disable()
else:
if (WeightOfPoint < 0):
SpawnDevice.Enable()
else:
SpawnDevice.Disable()
Verse の詳細については、この「ガイド」をご覧ください。
このチュートリアルでは、Verse タグ を使用し、それらのクリエイティブの仕掛けへの参照を取得しています。
次に、Verse スクリプトをコンパイルします。
コンテンツ ブラウザで、作成した DominationSpawnManager の仕掛けを見つけ、その設定をワールドにドラッグし、設定をカスタマイズします。
これらの設定および新しい Verse の仕掛けは、コンパイルして初めて表示されます。
コアの仕掛けを追加およびカスタマイズする
プレイヤー スポーン パッドの仕掛け
プレイヤー スポーン パッド の仕掛けは、有効なスポーン場所を決定する Verse スクリプトによって制御されます。
それぞれが独自の設定と機能を備えた複数のバラエティを利用します。これらの一部とは、そうしたスクリプトを無効または有効にすることで有効なスポーン場所を決定し、Verse を使用して通信します。
チーム 1 に 8 個、チーム 2 に 8 個で、合計 16 個の初期スポナーが必要です。これらをオープン時に配置すると、各ラウンドの最初のスポーンのセットのみに使用されます。
この仕掛けをカスタマイズするには、次の手順を実行します。
コンテンツ ドロワーから、プレイヤー スポーン パッドの仕掛けを選択して配置します。
-
その設定を、以下のようにカスタマイズします。
オプション 値 説明 Player Team (プレイヤーのチーム) チーム インデックス / Team 1 または Team 2 Team 1 と Team 2 のどちらがこの特定のスポナーからスポーンするかを設定します。 Use as Island Start (島のスタート地点として使用) False (オフ) この仕掛けは、島のスターター テレポーターとして使用されることはありません。 Visible in Game (ゲーム中に表示) False (オフ) この仕掛けは、ゲームプレイ中に表示されません。 Priority Group (優先グループ) 10 Priority Group (優先グループ) を有効にするにはチェックボックスをオンにします。これは、スポーンに使用される優先順位であり、値が小さいほど優先順位が高くなります。 Display Enemy Range (敵範囲を表示) Off (オフ) これは、エディタ内で [Enemy Range Check (敵範囲のチェック)] を表示するためのビジュアライザです。[Enemy Range Check (敵範囲のチェック)] を使用しなかった場合でも、すべてデフォルトでオフになります。 -
Verse タグ を追加します。
ゲームプレイ タグを使用すると、ゲーム実行中に特定のタグでマークされた仕掛けを見つけることができます。
[Gameplay Tags (ゲームプレイ タグ)] ドロップダウンを見つけ、[Edit (編集)] をクリックして true/false のチェックボックスを表示します。
初期スポーンのプレイヤー スポーン パッドの仕掛けの場合は、[Initial (初期)] をクリックし、それぞれが [Team Ownership (チーム オーナーシップ)] に Team1 または Team2 になっていることを確認します。
続いて、次の手順を実行します。
-
[Details (詳細)] パネルで [VerseTagMarkup] を選択します。
-
[Gameplay Tags (ゲームプレイ タグ)] ドロップダウンを見つけ、[Edit (編集)] をクリックして true/false チェックボックスを表示します。
1.初期スポナー用に、[Initial (初期)] をクリックします。それぞれが TeamOwnership として チーム 1 または チーム 2 を持つようにします。
-
この仕掛けを 15 回コピーして貼り付けます (合計 16 個の仕掛け)。
半分の仕掛けをマップの一方の側に (キャプチャー エリアの仕掛けに沿って) 配置します。また、残りの半分をもう一方の側に (別のキャプチャー エリアの仕掛けに沿って) 配置します。マップの中央に 3 つ目のキャプチャー エリアの仕掛けを追加します。3 つのキャプチャー エリアの仕掛けに「Capture Area_A」~「Capture Area_C」と名前を付けます。
これらのプレイヤー スポナーは、ゲームプレイの開始時のみに使用され、それ以降は Verse によって無効になります。
Verse タグは、どの場所でも定義できます。このチュートリアルのタグは、ProjectName.verse
で定義されています。これは、自分がプロジェクトに付けた名前です。
ファイルを開いて設定してから、次のタグをファイルに貼り付けます。
# Copyright Epic Games, Inc. All Rights Reserved.
using { /Verse.org/Simulation/Tags }
DominationSpawnTags<public> := module:
Tag_SpawnGroup<public>:= class(tag){}
Tag_SpawnGroup_Initial<public>:= class(Tag_SpawnGroup){}
Tag_SpawnGroup_GroupA<public>:= class(Tag_SpawnGroup){}
Tag_SpawnGroup_GroupB<public>:= class(Tag_SpawnGroup){}
Tag_SpawnGroup_GroupC<public>:= class(Tag_SpawnGroup){}
Tag_TeamOwnership<public>:= class(tag){}
Tag_TeamOwnership_Team1<public>:= class(Tag_TeamOwnership){}
Tag_TeamOwnership_Team2<public>:= class(Tag_TeamOwnership){}
上の画像のように、戦闘から離れた安全なエリアにスポナーのクラスタを配置します。これらのスポナーは、スクリプトに従って有効かどうかに応じて Verse によってオンとオフが切り替えられます。
赤いプレイヤー スポーン パッドは、Verse によって制御される 3 つのスポナー グループのうちの 1 つです。グループ内には 2 つのオーバーラップするスポナーがあります。1 つがチーム 1 用のものであり、もう 1 つがチーム 2 用のもので、マップ上の他の場所で繰り返されます。
スポーン パッド クラスタの白いスポナーは、フォールバック スポナーとして知られています。これらは、Verse によるチェックで、プレイヤーがスポーンするために他に有効な場所がない場合に使用されます。
マップ全体で、チーム 1 とチーム 2 から成るスポナーのグループを追加できます。スポーン グループを、グループ A、B、または C としてグループ化し、どのキャプチャー エリアに対応するかを示します。
リンクするキャプチャー エリアの仕掛けの近くにグループを設定します。
スポナーのグループを設定するには、次の手順を実行します。
-
安全なエリアで、2 つのスポーン パッドを互いに重ねます。1 つはチーム 1 に割り当て、もう 1 つはチーム 2 に割り当てます。
-
これらの設定を、以下に示すようにカスタマイズします。
オプション 値 説明 Player Team (プレイヤーのチーム) チーム インデックス / 1 または 2 チーム インデックスを チーム 1 またはチーム 2 のいずれかに設定し、プレイヤーをスポーンさせます。 Use as Island Start (島のスタート地点として使用) False (オフ) これは、島のスタート テレポーターとして使用されることはありません。 Visible in Game (ゲーム中に表示) False (オフ) このスポナーはゲームプレイ中に表示されることはありません。 Enabled During Phase (有効なゲームフェーズ) None (なし) これらは Verse のみで使用され、デフォルトで無効に設定されています。 Priority Group (優先グループ) 10 Priority Group (優先グループ) を有効にするにはチェックボックスをオンにします。これは、スポーンに使用され、値が小さいほど優先順位が高くなります。 Enemy Range Check (敵範囲のチェック) 60 これは、有効なスポーン ポイントかどうかを判定するために敵のチェックに使用される距離です。このサイズは、マップ サイズに応じて調整できます。マップが大きい場合はエリアを大きくし、マップが大きくない場合はエリアを小さくします。 Display Enemy Range (敵範囲を表示) Off (オフ) これは、エディタ内で [Enemy Range Check (敵範囲のチェック)] を表示するためのビジュアライザです。[Enemy Range Check (敵範囲のチェック)] を使用しなかった場合でも、すべてデフォルトでオフになります。 -
最後のセクションで行ったように、次のチェックボックスを使用して Verse タグを追加します。
1.キャプチャー ポイント A を囲むスポーン パッドに対しては [GroupA] にチェックを入れます。
1.キャプチャー ポイント B を囲むスポーン パッドに対しては [GroupB] にチェックを入れます。
1.キャプチャー ポイント C を囲むスポーン パッドに対しては [GroupC] にチェックを入れます。
-
先ほど配置した 2 つの近くに、もう 1 つプレイヤー スポーン パッドを配置します。これは、フォールバック スポナーになります。
-
その設定を、以下のようにカスタマイズします。
オプション 値 説明 Player Team (プレイヤーのチーム) 任意 チーム インデックスを チーム 1 またはチーム 2 のいずれかに設定し、プレイヤーをスポーンさせます。 Use as Island Start (島のスタート地点として使用) False (オフ) これは、島のスタート テレポーターとして使用されることはありません。 Visible in Game (ゲーム中に表示) False (オフ) このスポナーはゲームプレイ中に表示されることはありません。 Enabled During Phase (有効なゲームフェーズ) Always (常時) これらは、プレイヤーがスポーンするために常に有効なスポナーです。 Priority Group (優先グループ) 20 Priority Group (優先グループ) を有効にするにはチェックボックスをオンにします。これは、スポーンに使用され、値が小さいほど優先順位が高くなります。 Enemy Range Check (敵範囲のチェック) 60 これは、有効なスポーン ポイントかどうかを判定するために敵のチェックに使用される距離です。このサイズは、マップ サイズに応じて調整できます。マップが大きい場合はエリアを大きくし、マップが大きくない場合はエリアを小さくします。 Display Enemy Range (敵範囲を表示) Off (オフ) これは、エディタ内で [Enemy Range Check (敵範囲のチェック)] を表示するためのビジュアライザです。[Enemy Range Check (敵範囲のチェック)] を使用しなかった場合でも、すべてデフォルトでオフになります。 -
この仕掛けをマップ全体に均等にコピーおよび貼り付けします。キャプチャー ポイントにリンクされたスポナーと同じスポットに、これらも配置できます。
これらを合計で 16 個配置します。これらの仕掛けは、チームによる制限を受けません。これは、つまり、3 つのポイントすべてを確保したとしても、敗北した敵は予測可能なエリアではなくマップ全体でランダムに出現できるということになります。
最後に、ゲーム前ロビー には、多数のスポーンが使用されます。このゲーム前ロビーでは、ゲームがキューされるのをプレイヤーが待機します。仕掛けは合計 16 個あり、作成されたエリア内に配置され、このエリアでは両チームのプレイヤーが待機します。
これらの仕掛けを設定するには、次の手順を実行します。
-
ゲーム前ロビーを作成します。
-
プレイヤー スポーン パッドの仕掛けをロビー内に配置します。
-
その設定を、以下のようにカスタマイズします。
オプション 値 説明 Player Team (プレイヤーのチーム) None (なし) これらは、島が開始する際にのみ使用されます。 Use as Island Start (島のスタート地点として使用) True (オン) これらは、ゲーム前の島のスタートとして使用されます。 Visible in Game (ゲーム中に表示) False (オフ) このスポナーはゲームプレイ中に表示されることはありません。 Enabled During Phase (有効なゲーム フェーズ) Pre-Game Only (ゲーム開始前のみ) この仕掛けが有効になるゲーム フェーズを決定します。 Priority Group (優先グループ) 80 Priority Group (優先グループ) を有効にするにはチェックボックスをオンにします。これらのパッドは、常にゲーム前に使用されます。 Display Enemy Range (敵範囲を表示) Off (オフ) これは、エディタ内で [Enemy Range Check (敵範囲のチェック)] を表示するためのビジュアライザです。[Enemy Range Check (敵範囲のチェック)] を使用しなかった場合でも、すべてデフォルトでオフになります。 -
この仕掛けを 15 回コピーして貼り付けます。
キャプチャー エリアの仕掛け
続いて、キャプチャー エリアの仕掛けを次の手順でカスタマイズします。
-
配置済みのキャプチャー エリアの仕掛けを編集します。
-
その設定を、以下のようにカスタマイズします。
オプション 設定値 説明 Capture Radius (キャプチャー半径) 0.45 これは、タイルの仕掛け周囲のキャプチャー フィールドの半径です。 Visible During Game (ゲーム中に表示) False (オフ) この仕掛けのベースはゲームプレイ中に表示されません。 Periodic Scoring (周期的スコアリング) 所有チーム 1 秒ごとに、このポイントを現在確保しているチームにスコアが付与されます。 Score On Taking Control (コントロール中のスコア) 3 これは、ポイントの確保に対して与えられるスコアの数です。 Accent Color Type (アクセント カラー タイプ) Team Relationship Color (チーム リレーションシップ カラー) ポイントを現在保持しているチームのカラーを示します。 Capture Height (キャプチャー高さ) 0.0625 これは、キャプチャーの仕掛けのタイルの高さです。 Enemies Contest Scoring (敵競争スコアリング) True (オン) 敵がキャプチャー エリア内にいる場合、Periodic Scoring (周期的スコアリング) は無効になります。 Can Be Captured By Team (チームによって確保可能) All (すべて) どのチームもキャプチャー ポイントを確保できます。 Control Time (コントロール時間) 10 これは、キャプチャー エリアのコントロールをするために必要な時間数です。 Neutralize Time Override (制圧時間をオーバーライド) No Neutralize (制圧なし) ポイントが一方のチームによって確保された場合、もう一方のチームはそれを先に制圧する必要がなくなります。 Take Control Faster Per Player (プレイヤーごとにコントロールを迅速化) 2.0 これは、個々の追加チームメイトのアシストによって、確保および制圧速度を乗算するためのものです。 Progress Decay Type (進捗減衰タイプ) Over Time (時間経過) これは、部分的な確保の進捗がどのように処理されるかを決定します。 Partial Progress Decay Speed (部分的進捗減衰速度) 0.5 これは、キャプチャー エリア内にチームメイトが存在しない場合に、部分的な進捗が減衰する速度です。 HUD Elements (HUD 要素) Badge (バッジ) キャプチャー エリアは UI でバッジとして表示されます。 Requires Line OF Sight (照準線が必要) False (オフ) 照準線にかかわらず、キャプチャー エリア バッジは常に表示されます。 Hostile Icon Text (敵アイコン テキスト) Capture (キャプチャー) これは、敵がキャプチャー ポイントをコントロールしているときに表示される UI テキストです。 Hide HUD Icon At (HUD アイコンを非表示にする距離) 300 これは、HUD バッジが表示されなくなるために必要なメートル単位の距離です。 Clamp To Screen (画面にクランプ) True (オン) バッジのレンダリング時に、バッジを画面にクランプします。 Friendly Icon Text (味方アイコン テキスト) Defend (防御) これは、自分のチームがキャプチャー エリアをコントロールしているときの UI テキストです。 Neutral Icon Text (中立アイコン テキスト) Capture (キャプチャー) これは、キャプチャー エリアがコントロールされていないときの UI テキストです。 HUD Text Size (HUD テキスト サイズ) 1.5 バッジとともに表示されるテキストのサイズ。 HUD Message (HUD メッセージ) Captured A - Captured C (A を確保 ~ C を確保) スコアとともに HUD に表示するメッセージを設定します。各仕掛けに「Captured A (A を確保)」~「Captured C (C を確保)」までの固有のメッセージを設定します。 Show Map Marker (マップ マーカーを表示) True (オン) 目標アイコンをミニマップに表示するかどうかを決定します。 Show Order (順序を表示) 1 - 3 UI で目標の順序を決定します。各仕掛けに 1 ~ 3 までの固有の順序を設定します。 -
すべてのキャプチャー エリアに対し、この手順を繰り返します。
前に説明したように、マップの反対側に 2 つのキャプチャー エリアの仕掛けを配置し、1 つのキャプチャー エリアの仕掛けを中央に配置する必要があります。仕掛けはマップ全体に分散させ、各チームの近くにキャプチャー エリアの仕掛けを 1 つずつ配置し、チーム同士が競合するように 3 つ目を中央に配置してください。
優れたキャプチャー ポイントの配置を行うには、隠れる場所、周囲の地理的状況、高さ、他のキャプチャー ポイントまでの距離を考慮する必要があります。
また、キャプチャー エリアを視覚的に示す方法についても考慮する必要があります。キャプチャー エリアの仕掛けには、優れたデフォルト オプションがいくつか含まれていますが、ワールド アート、ライティング、デカールなどの使用方法についても検討しましょう。
Deserted では、視覚的に区別するため、ベースをスピニング ライトの器具に置き換えています。
プレイヤー カウンター
3 つの プレイヤー カウンター の仕掛けを、各キャプチャー エリアの仕掛けの近くに 1 つずつ配置します。
次に、プレイヤー カウンターの仕掛けを設定し、上記の仕掛けにリンクするボリュームを作成します。仕掛けに「LargeZone_A」~「LargeZone_C」という名前を付けることができます。
上の画像では、キャプチャー ポイント C の周りに赤いボリュームが表示されています。ボリュームのサイズは、カバーするエリアのサイズによって異なります。
プレイヤー カウンターの仕掛けが次の設定になるように、カスタマイズします。
オプション | 値 | 説明 |
---|---|---|
Compare Player Count (プレイヤーのカウントを比較) | Do Not Compare (比較しない) | このゾーンに対して、相対的なプレイヤーのカウント数は評価されません。 |
Info Panel Visible (情報パネルを表示) | False (オフ) | 情報パネルは、ゲームプレイ中に表示されません。 |
Use Zone (ゾーンを使用) | True (オン) | 計算にマップ全体ではなくゾーンを使用するには、このボックスにチェックを入れます。 |
Zone Width (ゾーンの幅) | Variable (可変) | このゾーンが、キャプチャー ポイントの 1 つの周りのエリアをカバーするように設定します。 |
Zone Depth (ゾーンの奥行き) | Variable (可変) | このゾーンが、キャプチャー ポイントの 1 つの周りのエリアをカバーするように設定します。 |
Zone Height (ゾーンの高さ) | Variable (可変) | このゾーンが、キャプチャー ポイントの 1 つの周りのエリアをカバーするように設定します。 |
仕掛け LargeZone_B および仕掛け LargeZone_C に対して、手順 3 および 4 を繰り返します。
Verse の仕掛け
この仕掛けを使用し、ディレクト イベント バインディングを必要な仕掛けにリンクすると、Verse スクリプトがそれらの仕掛けを参照できます。
Verse の仕掛けをカスタマイズするには、次の手順を実行します。
- [Outliner (アウトライナー)] タブで、[DominationSpawnManager] を見つけて選択します。
-
[Details (詳細)] パネルで、[DominationSpawnManager (Instance)] を選択します。
-
その設定を、以下のようにカスタマイズします。
オプション 値 説明 Visible In Game (ゲーム中に表示) False (オフ) この仕掛けは、ゲーム中に表示されません。 Enabled At Game Start (ゲーム開始時に有効化) True (オン) この仕掛けはゲーム開始時に有効になります。 -
[DominationSpawnManager] で、次の設定を行います。
オプション 設定値 説明 0 Capture Area_A ポイントを確保したチームを Verse スクリプトに通知します。 1 Capture Area_B ポイントを確保したチームを Verse スクリプトに通知します。 2 Capture Area_C ポイントを確保したチームを Verse スクリプトに通知します。 0 LargeZone_A プレイヤーがエリアを離脱した場合に Verse スクリプトに通知して有効なスポナーを推定することで、TriggersLargeZoneEntered と組み合わせて機能します。 1 LargeZone_B プレイヤーがエリアを離脱した場合に Verse スクリプトに通知して有効なスポナーを推定することで、TriggersLargeZoneEntered と組み合わせて機能します。 2 LargeZone_C プレイヤーがエリアを離脱した場合に Verse スクリプトに通知して有効なスポナーを推定することで、TriggersLargeZoneEntered と組み合わせて機能します。
ロックの仕掛け
ロック の仕掛けは、多くのプレイヤー スポーン エリアと組み合わせられます。各ロックの仕掛けには一意の名前を付ける必要があります。
プレイヤーが再度入ることができないように、ロックとドアが付いたスポーン クローゼットを作成できます。
インターロックされるコンポーネントは一緒に番号付けを行い、それぞれの場所を継続的にトラックすることをお勧めします。このチュートリアルの目的のため、安全なスポーン エリアが合計で 4 つあります。
1 つ目から 4 つ目までカスタマイズするには、次の手順を実行します。
-
閉じたドアの外にロックの仕掛けを配置します。
-
2 つの トリガー の仕掛けを、ルーム内に配置し、ドアをカバーします。
a. トリガーの仕掛けに参照しやすい名前を付けます。このチュートリアルのトリガーは、TriggerDoorOpen1 ~ 4 および TriggerDoorClose1 ~ 4 という名前です。
-
ロックの仕掛けの設定を、以下のようにカスタマイズします。
オプション 値 説明 Visible During Game (ゲーム中に表示) False (オフ) この仕掛けは、ゲームプレイ中に表示されません。 Hide Interaction When Locked (ロック時にインタラクションを非表示にする) True (オン) ゲームプレイ中にロックされているときは、プレイヤーはインタラクションを確認できません。 -
ロックの仕掛けをトリガーの仕掛けとペアにするには、ディレクト イベント バインディングを設定します。
仕掛け A | 機能 | 仕掛け B | イベント | 説明 |
---|---|---|---|---|
Lock (ロック) | 開く | DoorOpenTrigger1 ~ DoorOpenTrigger4 | トリガー時 | TriggerDoorOpen1 の仕掛けがアクティベートされると、ドアが開きます。 |
Lock (ロック) | 閉じる | DoorCloseTrigger1 ~ DoorOpenTrigger4 | トリガー時 | TriggerDoorClose1 の仕掛けがアクティベートされると、ドアが閉じます。 |
セーフ エリアごとに 3 回これらの手順を繰り替えして、ディレクト イベント バインディングがその横にあるトリガーに一致するように変更します。
ドアをカバーするトリガーの仕掛けでは、プレイヤーが接触することで、ロックの仕掛けにシグナルを送ってドアを開く必要があります。これは、廊下をカバーする左のトリガーの仕掛けに表示されています。
右には、背後のドアを閉めるためのシグナルを送信するまで、2 つ目のトリガーの仕掛けが待機します。これにより、内部のプレイヤーは離脱できますが、外部のキャンパーの可能性があるプレイヤーは入ることができません。
これらの仕掛けをカスタマイズするには、次の手順を実行します。
-
次の表を使用して、TriggerDoorOpen1 ~ 4 をカスタマイズします。
オプション 値 説明 Visible In Game (ゲーム中に表示) False (オフ) トリガーは、ゲームプレイ中に表示されません。 Trigger VFX (トリガー VFX) False (オフ) この仕掛けは、視覚効果をトリガーしません。 Trigger SFX (特殊効果の発動) False (オフ) この仕掛けには、サウンド エフェクトはありません。 -
次の表を使用して、TriggerDoorClosed1 ~ 4 をカスタマイズします。
オプション 値 説明 Visible In Game (ゲーム中に表示) False (オフ) この仕掛けは、ゲームプレイ中に表示されません。 Triggered by Player (プレイヤーがトリガー) False (オフ) プレイヤーとの接触ではこのトリガーはアクティベートされません。 Trigger Delay (トリガーの遅延) 2 2 秒後にこの仕掛けはシグナルを送信します。 Trigger VFX (トリガー VFX) False (オフ) この仕掛けは、視覚効果をトリガーしません。 Trigger SFX (特殊効果の発動) False (オフ) この仕掛けには、サウンド エフェクトがありません。 -
次に、ディレクト イベント バインディングを設定します。
仕掛け A 機能 仕掛け B イベント 説明 トリガー トリガー TriggerDoorOpen1 ~ TriggerDoorOpen4 トリガー時 ドアのトリガーがアクティベートされると、これはシグナルを送信し、この仕掛けが 2 秒後にアクティベートされ、ロックが開かれます。
それぞれのドアが閉じられて閉鎖され、自動で開く必要があるルームについて、命名規則の数字を大きくしてこの設定を繰り返します。
ゲームプレイの開始時には、ドアを開きたい場合、閉じたい場合、ロックしたい場合があるでしょう。これについても、ロックの仕掛けを使用して実現できます。この例の場合、より良い移動フローを可能にするため、このドアは開いておきます。
このメカニックを設定するには、次の手順を実行します。
-
LockDevice5 の名前で別のロックの仕掛けを配置します。
-
その設定を、以下のようにカスタマイズします。
オプション 値 説明 Visible During Game (ゲーム中に表示) False (オフ) この仕掛けは、ゲームプレイ中に表示されません。 Hide Interaction When Locked (ロック時にインタラクションを非表示にする) True (オン) ゲームプレイ中にロックされているときは、プレイヤーはインタラクションを確認できません。 Initial Door Position (初期ドア位置) Open (開く) ゲームプレイ中に、ドアは開いて開始します。
HUD コントローラー
HUD コントローラー の仕掛けは、島の多数の設定に合わせてカスタマイズできます。この仕掛けを設定するには、次の手順を実行します。
-
HUD コントローラーの仕掛けを島に配置します。
-
その設定を、以下のようにカスタマイズします。
オプション 設定値 説明 Show HUD (HUD を表示する) Yes (オン) UI 内に HUD を表示します。 Show Minimap (ミニマップを表示) No (オフ) UI で最小化されたマップを非表示にします。 Show HUD Info Box (HUD情報ボックスを表示) Yes (オン) UI 内に HUD 情報ボックスを表示します。 Show Build Menu (建築メニューを表示) No (オフ) UI でビルド メニューを非表示にします。 Show Player Inventory (プレイヤーのインベントリを表示) Yes (オン) プレイヤーのインベントリを表示します。 Show Wood Resource (木材を見せる) No (オフ) UI からこの要素を非表示にします。 Show Stone Resource (石材を見せる) No (オフ) UI からこの要素を非表示にします。 Show Metal Resource (金属を見せる) No (オフ) UI からこの要素を非表示にします。 Show Gold Resource (ゴールドを表示する) No (オフ) UI からこの要素を非表示にします。 Show Map Scoreboard Prompt (マップのスコアボードのプロンプトを表示) Yes (オン) マップのスコアボードのプロンプトを表示します。 Show Storm Timer (ストーム タイマーを表示) No (オフ) UI 内でストーム タイマーを非表示にします。 Show Player Count (プレイヤー カウントを表示) No (オフ) UI 内でプレイヤー数を非表示にします。 Show Elimination Counter (撃破カウンターを表示) No (オフ) UI の撃破カウンターを非表示にします。 Show Round Timer (ラウンドタイマーを表示) No (オフ) UI のラウンド タイマーを非表示にします。
バリアの仕掛け
メインの戦闘アリーナは多数の見えない バリア の仕掛けで囲まれており、プレイヤーがアリーナから離脱できないようになっています。作成したマップに応じてこれらの数やサイズはカスタマイズできますが、次の基本的な設定を備えている必要があります。
バリアの仕掛けをカスタマイズするには、次の手順を実行します。
-
プレイヤーがアリーナから離脱するのをブロックする場所にバリアの仕掛けを配置します。
-
その設定を、以下のようにカスタマイズします。
オプション 値 説明 Barrier Material (バリア マテリアル) None (なし) テクスチャを使用せず、ゲームプレイ中は非表示にできるようになっています。 Barrier Depth (バリア奥行き) Variable (可変) 必要に応じてアリーナ全体を囲むように調整します。 Width (幅) Variable (可変) 必要に応じてアリーナ全体を囲むように調整します。 Barrier Height (バリア高さ) 3 非表示のバリアの高さをタイルいくつ分にするかを決定します。 -
この仕掛けをコピーおよび貼り付けし、アリーナの周囲にシームレスなバリアを作成します。
ミューテーター ゾーンの仕掛け
レベルの下には ミューテーター ゾーン の仕掛けがあります。仕掛けの幅、奥行き、および高さは、アリーナ全体をカバーするのに十分である必要があります。
[My Island (自分の島)] の設定の代わりに、一部の設定が行われました。この仕掛けをカスタマイズするには、次の手順を実行します。
-
レベルの下にミューテーター ゾーンの仕掛けを配置します。
-
その設定を、以下のようにカスタマイズします。
オプション 値 説明 Zone Width (ゾーンの幅) Variable (可変) 必要に応じてアリーナ全体を囲むように調整します。 Zone Depth (ゾーンの奥行き) Variable (可変) 必要に応じてアリーナ全体を囲むように調整します。 Zone Height (ゾーンの高さ) Variable (可変) 必要に応じてアリーナ全体を囲むように調整します。 Affects Creatures (クリーチャーに影響) False (オフ) クリーチャーはゾーンによる影響を受けません。 Affects Guards (ガードに影響) False (オフ) ガードはゾーンによる影響を受けません。 Allow Editing (編集を許可) False (オフ) このゾーンは、プレイヤーによって建築された構造体の編集を許可しません。 Enable VFX (VFX を有効にする) False (オフ) この仕掛けは、視覚効果をトリガーしません。 Allow Weapon Fire (武器の攻撃を許可) True (オン) プレイヤーは、ゾーン内で武器で攻撃できます。 Allow Building (建築を許可) False (オフ) プレイヤーはゾーン内で建築ができません。 Enabled on Phase (有効なゲーム フェーズ) Always (常時) ミューテーター ゾーンは、どのゲームプレイ中でも常にオンでアクティブです。 Pickup Life Span (ピックアップのライフ スパン) True (オン):25 オンに設定されている場合、ドロップされたアイテムが破壊されるまで持続する整数値の秒 (この場合は、25秒)。これにより、プレイヤーは倒されたプレイヤーから武器を拾うことができます。
プレイヤーのロードアウトを追加する
キャプチャー ポイントの確保を目指して戦う際にプレイヤーが使用するロードアウトを作成できます。クラス セレクター UI の仕掛けを クラス デザイナー の仕掛けとペアにして、マッチの開始時にプレイヤーが選択するクラスを作成および表示します。
各クラスに、独自のクラス デザイナーの仕掛けが必要です。クラス セレクター UI の仕掛けは 1 つのみ配置できます。
ロードアウトを設定するには、次の手順を実行します。
-
クラス セレクター UI の仕掛けを配置し、デフォルトの設定を使用します。
-
プレイヤーが使用する各クラスおよびロードアウト用に 1 つのクラス デザイナーを配置します。
a. プライマリ武器から最初に登録し、武器および弾薬をクラス デザイナーに登録します。
-
その設定を、以下のようにカスタマイズします。
オプション 値 説明 Class Name (クラス名) <可変> クラス セレクターで使用するクラスの名前を入力します。 Class Description (クラスの説明) <可変> クラス セレクターで使用するクラスおよびロードアウトの説明を入力します。 Class Identifier (クラス ID) <可変> 各クラスには別々の識別子が必要です (1 ~ X、X は作成したクラスの数です)。 Equip Granted Item (付与されたアイテムの装備) First Item (1 つ目のアイテム) スポーン時に登録済みロードアウトの最初のアイテムを装備します。
サウンド エフェクトを追加する
オーディオのインポートの詳細については、こちら をクリックしてください。
サウンド エフェクトをインポートし、コンテンツ ブラウザからサウンドの発生源のエリアにドラッグします。
選択したエリアにグローバルなサウンド エフェクトのセレクションを追加することもできます。
これを行うには、コンテンツ ブラウザからアリーナに音声波形をドラッグ アンド ドロップします。位置は関係ないため、便利なようにまとめて配置できます。
Sound Wave アセットを開き、[Details (詳細)] パネルで [Looping (ループ)] を True に変更します。上で作成したキューとは異なり、このサウンドはマップ全体で再生されるため、他の処理は不要です。
より高度なオーディオの制御が必要な場合は、キューが役立ちます。
右クリックして、Sound Wave アセットのカスタムの .wav から [Create Cue (キューを作成)] を選択し、出力をリンクしてループ再生する波形のプレイヤーを作成します。上のリンクされているブループリントは、キューが作成されると自動的に作成されます。
これを行うには、次の手順を実行します。
[Wave Player (ウェーブ プレーヤー)] をクリックし、[Looping (ループ)] を True に変更します。
次に、[Looping Wave Player (ループ ウェーブ プレーヤー)] をクリックし、[Override Attenuation (減衰をオーバーライド)] を True に変更して、[Inner Radius (内径)] および [Falloff Distance (フォールオフ距離)] を設定します。
視覚効果を追加する
ポストプロセス エフェクト を利用すると、カラー グレーディングを使用したりカメラ エフェクトを適用したりして、プロジェクトのルック アンド フィールを変更できます。レベル全体にポスト プロセス ボリュームの効果を適用するには、次の手順を行います。
-
レベルに ポスト プロセス ボリューム を追加します。ポスト プロセス ボリュームを配置する方法については、「ポスト プロセス ボリュームを使用する」を参照してください。
-
ポスト プロセス ボリュームの [Details (詳細)] パネルの [Post Process Volume Settings (ポスト プロセス ボリュームの設定)] で、[Infinite Extent (Unbound) (無制限に適用 (アンバウンド))] を有効にします。これにより、ポスト プロセス ボリュームの効果がレベル全体に適用されます。
このプロジェクトでは、次のポスト プロセス エフェクトが使用されています。
-
ブルーム:シーンのより明るい領域に対してヘイズ/グローを制御します
-
色収差:画面のエッジでカラー チャンネル / 歪みの一定の分離を行います
-
レンズ フレア:光がどれくらいの明るさでカメラにレンズのフレアをキャストするかを制御します
-
ビネット:画面のエッジ周辺により暗いグラディエントを追加します
-
フィルム粒子:フィルム粒子を追加します
-
カラー グレーディング:サチュレーション / コントラスト / ガンマについては、サチュレーションのみ微調整を行います (つまり、シーンは彩度が低下し、グレースケールに近づきます)
このプロジェクトでは、次のポスト プロセス マテリアルも使用されています。
-
シーンで熱によって揺らぐエフェクト
-
マテリアル ベースのカラー グレーディング
-
シーン配色ベースのオフ カメラの視線方向
また、デカール を追加することもできます。デカールは、マテリアル エディタで作成し、シーン内にドラッグします。
コンテンツ ブラウザからデカールを見つけ、表示したいエリアにドラッグします。
[Scale (スケール)] オプションおよび [Proximity (近接性)] を使用し、デカール アクタをスタティックメッシュに表示します。これにより、汚れに追加のテクスチャを作成したり、カスタムのテクスチャを作成してこぼしたペンキのようなものを表現したり、ブロードキャストでスタティックメッシュの上にサインや戦闘ダメージを作成したりできます。
ゲームプレイに警告灯を追加することもできます。
警告灯は、回転するマテリアル コンポーネントを備えたスタティックメッシュであり、ライト マテリアル関数を使用したポイント ライトと組み合わされています。
この警告灯は、元々 FBX ファイルで作成され、UEFN にインポートされました。
UEFN は、3D オブジェクト、オーディオ ファイル、テクスチャなどのほか、その他さまざまな形式のあらゆる種類のコンテンツをインポートできます。インポートするフォルダを右クリックすると、インポート オプションが表示されます。
オブジェクトがインポートされると、シーン ファイルから追加されたマテリアルが必要になります。これを追加するには、オブジェクトを単にダブルクリックし、インポートしたオブジェクトのマテリアル スロットにマテリアルを適用します。
UEFN で 3D オブジェクトをインポートおよび利用する方法の詳細については、このドキュメントで取り上げられていない内容を他のチュートリアルで参照できます。
Niagara は、動的な 視覚効果 の作成に使用できます。
コンテンツ ブラウザで完成したアセットを見つけ、ドラッグアンドドロップしてください。アセットは、スケーリングを調整できます。
レベル シーケンサーを使用すると、ゲームプレイ内で一定のエリアを雰囲気のあるカモメに周回させることもできます。
これは、グローバルなアセットであり、コア UEFN コンテンツ ブラウザからすべてのクリエイターが利用できるものです。これを追加するには、コンテンツ ブラウザで「Fortnite」フォルダを検索し、Atmospheric Seagulls Orbit をドラッグ アンド ドロップします。
ゲームプレイにジェット機を追加して飛ばすこともできます。
このジェット機には、ムービー シーケンス の仕掛けを使用しています。ジェット機の物理モデルは、飛行物体用にレベルより下で使用され、非表示になっています。
ジェット機には、レベル シーケンスを作成する必要があります。独自のレベル シーケンスを作成する方法については、こちら を参照してください。レベル シーケンスには、ジェット機のトランスフォーム キーフレーム、オーディオ SFX、カメラの揺れ、VFX エミッタなどが含まれています。
Verse を使用して、シーケンスを再生するタイミングをコントロールすることもできます。これを行うには、以下のスクリプトを使用し、新しい Verse の仕掛けを作成します。
以下の Verse スクリプトをコンパイルします。コンテンツ ブラウザに新しい仕掛けが作成されます。この仕掛けは、ドラッグし、レベル内で通常の編集ができます。
# Copyright Epic Games, Inc. All Rights Reserved.
using { /Fortnite.com/Devices }
using { /Verse.org/Random }
using { /Verse.org/Simulation }
################################################################################
## この仕掛けはムービー シーケンスの仕掛けの配列を参照し、可変的なクールダウンを間に挟んでムービー シーケンスをランダムに再生します。
################################################################################
sequencer_randomization_device := class<concrete>(creative_device):
# 間をランダム化するためのムービー シーケンスの仕掛けの配列
@editable
SequencerList : []cinematic_sequence_device = array{}
# 別のシーケンスをトリガーするまでの最小 / 最大待機時間
@editable
CooldownMin:float = 120.0
@editable
CooldownMax:float = 240.0
# 選択できるシーケンスが 1 つ以上ある場合、同じシーケンスが 2 回続けて再生されるのを防ぐ必要があるかどうか。
@editable
PreventBackToBackRepeats:logic = true
# OnBegin がゲーム開始時に実行されます
OnBegin<override>()<suspends>:void=
if (SequencerList.Length > 0):
QueueSequence(GetRandomInt(0, SequencerList.Length-1))
# ランダムな時間待機してから、シーケンスを再生します
QueueSequence<private>(Index:int)<suspends>:void=
CooldownTime:float = GetRandomFloat(CooldownMin, CooldownMax)
Sleep(CooldownTime)
if (MySequencer := SequencerList[Index]):
MySequencer.Play()
QueueSequence(GetNextIndexToPlay(Index))
# 次のシーケンス インデックスに関して、完全にランダムか、最後に再生されたシーケンスを除くかを決定します
GetNextIndexToPlay<private>(LastIndex:int):int=
if (SequencerList.Length > 1 and PreventBackToBackRepeats?):
var IndexToReturn:int = LastIndex + GetRandomInt(1, SequencerList.Length-1)
if(set IndexToReturn = Mod[IndexToReturn, SequencerList.Length]):
return IndexToReturn
return GetRandomInt(0, SequencerList.Length-1)
各飛行方向にムービー シーケンスの仕掛けを追加し、それらを次のように設定します。
オプション | 値 | 説明 |
---|---|---|
Sequence (シーケンス) | Created Sequence (作成したシーケンス) | このフィールドに、シネマティック レベル シーケンスを配置します。このチュートリアルでは、3 つのムービー シーケンスで 3 つのレベル インスタンスを使用し、Verse スクリプトでランダムに飛行タイミングを決定しています。 |
コンテンツ ブラウザから Verse の仕掛けを追加し、次の設定になるようカスタマイズします。
オプション | 値 | 説明 |
---|---|---|
CooldownMin | 180 | ジェット機の飛行が発生するまでの最小クールダウン (秒)。 |
CooldownMax | 500 | 再度ジェット機の飛行が発生するまで Verse スクリプトが待機する最大クールダウン (秒)。 |
PreventBackToBackRepeats | True (オン) | ジェット機が同じ方向に 2 回飛行することがないようにします (リンクされたシーケンサーが複数ない場合)。 |
また、トリガーするには、各ムービー シーケンサーの仕掛けへの参照が必要です。
仕掛け A | 機能 | 仕掛け B | イベント | 説明 |
---|---|---|---|---|
シーケンサー リスト | ジェット機 | CinematicSequenceDevice | 1-3 | 各ムービー シーケンスの仕掛けに参照を追加します。 |
レベル シーケンスの仕掛けおよびムービー シーケンスの仕掛けを使用し、移動するパイプを作成することもできます。