このステップでは、タイマーの仕掛けとエンドゲームの仕掛けを使って Verse でタイマー システムを作成します。 このタイマーは、プレイヤーが任意のターゲットに命中したときに開始し、時間が切れるとゲームが終了してスコアボードが表示されます。
島設定や仕掛けだけでもタイマーでゲームを終了できますが、Verse を使うことで、使用するゲーム メカニクスをより細かく制御できます。
島を編集する
ビューポートまたは [アウトライナー] パネルで [島設定] の仕掛けを選択します。
[詳細] パネルで、以下のパラメーターを設定します。
[Stat to End (終了条件の統計値)] のチェックを外します。 これにより、元のスコアによる終了条件が削除され、代わりにタイマーを使用できるようになります。
[Game Score Display Time (ゲームスコアの表示時間)] を 10 秒に設定します。
[First Scoreboard Column (スコアボードの1列目)] を有効にし、[Score (スコア)] に設定します。
[コンテンツブラウザ] で [Timer Device (タイマーの仕掛け)] を探し、ビューポートにドラッグします。
[詳細] パネルで [Visible During Game (ゲーム中に表示)] を [Hidden (非表示)] に設定します。 これにより、ゲーム中はタイマー オブジェクトが非表示になりますが、アクティブな間はプレイヤーの HUD に時間が表示されます。
[コンテンツブラウザ] で [End Game Device (エンドゲームの仕掛け)] を探し、ビューポートにドラッグします。
Verse コードを書く
このページでは、コード変更をステップごとに案内します。作業内容を確認したい場合は、最終結果として「完全なコード」セクションを参照してください。
shooting_range_manager_device.verseファイルを開きます。新しいデバイス参照を格納する変数と、タイマーの状態を追跡するロジック フラグを追加します。
フラグ変数とは、特定の条件が満たされたかどうかを追跡するためにコード内に存在する変数のことです。
IsTimerStartedはこの場合のフラグで、false は「いいえ」、true は「はい」を表します。Verse@editable Timer:timer_device = timer_device{} @editable EndGame:end_game_device = end_game_device{} var IsTimerStarted:logic = falseタイマーが終了してゲームを終了させるときに呼び出される
OnTimerSuccessコールバック メソッドを追加します。OnTimerSuccess メソッドは、タイマーを起動したエージェント (存在する場合) を示すオプションのエージェント パラメーターを受け取ります。 エンドゲームの仕掛けを起動するにはオプションではないエージェント パラメーターが必要なため、
if文内でオプションのエージェントを非オプションに変換します。 オプション型についての詳細は「オプション」を参照してください。Verse# When time runs out, end the game. OnTimerSuccess(Agent:?agent):void= if (TriggerAgent := Agent?): EndGame.Activate(TriggerAgent)OnTimerSuccess コールバックへのタイマーのサブスクリプションを設定し、タイマーを開始する StartTimer メソッドを追加します。
Verse# Setup and start the timer. StartTimer():void= # Set the event subscription to call OnTimerSuccess when the timer finishes. Timer.SuccessEvent.Subscribe(OnTimerSuccess) # Start the timer. Timer.Start() # Track that the timer has started. set IsTimerStarted = trueAdjustScore メソッドを修正して、タイマーを開始するようにします。 これにより、プレイヤーはゲーム開始前に最初のショットを準備する時間を得られます。
Verse# Adjusts the player's score by the provided value. AdjustScore(Value:int):void= <# --- New Code Start --- #> # Start the timer if it hasn't started yet. if (not IsTimerStarted?): StartTimer() <# --- New Code End --- #>Verse コードを保存してビルドします。
完全なコード
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
# A device that manages shooting range gameplay.
shooting_range_manager_device := class(creative_device):
@editable
ScoreManager:score_manager_device = score_manager_device{}
@editable
まとめ
ビューポートまたは [アウトライナー] パネルで shooting_range_manager_device を選択します。
[詳細] パネルで、以下のパラメーターを設定します。
タイマーをタイマーの仕掛けに設定します。
EndGame をエンドゲームの仕掛けに設定します。
変更をプッシュして島をプレイテストします。
任意のターゲットを撃ったときにタイマーが開始されることを確認します。
タイマーが終了するとゲームが終了し、スコアボードが表示されることを確認します。
さらに詳しく知りたいですか?
3. ボーナス タイム ターゲット
プレイヤーに、貴重な秒数を追加できる意外なターゲットを報酬として与えましょう!