前提条件:learn-code-basics-6-defining-a-function-in-verse
関数の構造が把握できたので、独自の関数を作成しましょう。独自の関数を 2 つ作成します。
前回の演習では、フォートナイトのプレイヤー キャラクターにダメージを与えるのに必要なコードの行について学習しました。 コードが必要なときに、これらの同じ行を毎回入力しなくてすむと良いでしょう。
-
HurtPlayer()
という名前の関数を宣言します。この関数の戻り値の型はvoid
です。つまり、戻り値はありません。Verse ファイルの最後に関数の宣言を配置します。関数の本体は「レッスン 5:練習の時間です!」と同じコードであるため、おさらいが必要であればそちらで確認してください。HurtPlayer() : void = Playspace: fort_playspace = GetPlayspace() AllPlayers: []player = Playspace.GetPlayers() if (FirstPlayer : player = AllPlayers[0]): if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]): FortniteCharacter.Damage(50.0)
関数内で別の関数を定義することはできないため、すべての関数が
OnBegin()
と同じレベルにインデントされるようにします。 -
これで、キャラクターにダメージを与える関数をいつでも使用できるようになりました。しかし、関数の宣言では、関数のボディは実行されません。関数本体を実行するには、その関数を 呼び出す 必要があります。これらの関数を
OnBegin()
内で呼び出すようにします。HurtPlayer() Print("Player Hurt")
-
すでにお気付きかもしれませんが、キャラクターを回復させるメソッドもあります。そのメソッドの名前は
Heal()
です。また、このメソッドは、Damage()
を呼び出すのとまったく同じ方法で呼び出すことができます。次のコードを使用して、Verse ファイルの最後でHealPlayer()
関数を作成します。HealPlayer() : void = Playspace: fort_playspace = GetPlayspace() AllPlayers: []player = Playspace.GetPlayers() if (FirstPlayer : player = AllPlayers[0]): if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]): FortniteCharacter.Heal(20.0)
-
次に、
HealPlayer()
の呼び出しをOnBegin()
の本体内での関数呼び出しに追加します。HurtPlayer() Print("Player Hurt") Sleep(5.0) HealPlayer() Print("Player Healed")
Sleep()
関数の新しい呼び出しがあることにお気付きになるかもしれません。Sleep()
は基本的に、後続のコードの実行を続ける前にプログラムを待機させます。待機時間は、Sleep()
に渡すパラメータ (秒単位) によって決まります (パラメータの詳細については、後のレッスンで学びます)。ここに Sleep()
がなければ、HealPlayer()
が HurtPlayer()
の後に直ちに実行されることになるため、2 つの関数呼び出しの効果に気付かないでしょう。
完全なスクリプト
using { /Fortnite.com/Devices}
using { /Fortnite.com/Characters}
using { /Fortnite.com/Playspaces}
using { /Verse.org/Simulation}
using { /Verse.org/Verse}
hello_world_device := class(creative_device):
# 実行中のゲームで仕掛けが開始されたときに実行します
OnBegin<override>()<suspends>:void=
HurtPlayer()
Print("Player Hurt")
Sleep(5.0)
HealPlayer()
Print("Player Healed")
HurtPlayer() : void =
Playspace: fort_playspace = GetPlayspace()
AllPlayers: []player = Playspace.GetPlayers()
if (FirstPlayer : player = AllPlayers[0]):
if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]):
FortniteCharacter.Damage(50.0)
HealPlayer() : void =
Playspace: fort_playspace = GetPlayspace()
AllPlayers: []player = Playspace.GetPlayers()
if (FirstPlayer : player = AllPlayers[0]):
if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]):
FortniteCharacter.Heal(20.0)