ロジックの流れとしては、
1. Rキーを押す or マシンが10%以上のダメージを受けると、変数が+1される。
2. 変数が1の時に、一定時間カウントし、プレイヤーをリスポ―ンし、再度リスポーン可能な状態に戻す。
となります。
個別の説明は以下に続きます。
L.1-1
[ON KEY PRESSED]トリガーにRを設定する事で、Rキーを押したときに次のイベントが実行されます。
- ローカル変数{respawn} を +1 します。
L.1-2
[ON MACHINE DAMAGE]トリガーにDAMAGE LEVEL 10%を設定する事で、機体が10%損傷したときに次のイベントが実行されます。
- ローカル変数{respawn} を +1 します。
L.1-3
[ON VARIABLE]トリガーに ローカル変数{respawn} = 1 を設定する事で、ローカル変数{respawn} = 1のときに次のイベントが上から順番に実行されます。
- 5秒待ちます。
- プレイヤーをリスポーンします。
- ローカル変数{respawn}を0にします。
以下、このロジックにまつわる補足です。
Q.変数って何?
A.変数は、「名前のつけられる箱」だと考えてください。
今回は、箱に{respawn}という名前をつけました。
そして、今回のロジックでいえば、Rキーが押されたら{respawn}という名前の箱の中にモノを1つ入れる、箱の中にモノが1つだけ入った状態になったときにリスポーンを行う、といったイメージです。
Q.変数名は respawn じゃないとだめなの?
A.いいえ。変数名はなんでもOKです。
簡単にロジックを試してみたい場合は、A、B等簡単な文字にするのもよいでしょう。
ただし、変数を多用する場合では、変数名を抽象的な記号にすると覚えるのが大変です。
そこで、今回のように変数名に意味を持たせる方法が便利です。
Q.ローカル変数、グローバル変数とは?
A.変数にはグローバル変数とローカル変数の2種類があります。
グローバル変数はどこからでも参照できる変数です。
ローカル変数は、そのオブジェクト内でのみ参照できる変数です。
例えば、このロジックで用いる変数をグローバル変数にした場合、違うバウンディングボックスでも同じグローバル変数{respawn}を参照するため一人がリスポーンしようとすると全員が同時にリスポーンされます。
複数のバウンディングボックスにそれぞれ別のグローバル変数を割り当て上記のリスポーンロジックを設定する事でも対応できますが、人数分の変数をその都度入力するため手間がかかります。
一方で、今回説明したリスポーンロジックではローカル変数を使っているため、同じ名前の変数でも各バウンディングボックス毎に別のローカル変数、別のロジックとして計算されます。
Q.ローカル変数はどうやって設定するの?
A.トリガーとして使う場合、イベントとして使う場合でそれぞれ説明します。
[トリガーにおいて]
地球儀のようなマークがグローバル変数、指紋のようなマークがローカル変数であることを示しています。
グローバル、ローカルの切り替えはこのマークをクリックすることで行います。
[イベントにおいて]
変数を変更するイベントにおいて、SCOPE OF CHANGEの下の欄が ≪GROBAL≫となっているときはグローバル変数です。
ローカル変数にするには、この欄をクリックし、次にローカル変数を設定したいオブジェクトを次にクリックすると反映されます。
Q.変数 {respawn} +1 なのはなぜ? 変数{respawn} =1 ではだめなの?
A.変数 {respawn} =1 の際にリスポーンするロジックを設定した例を考えてみましょう。
リスポーンをするためにRキーを押すと、[ON KEY PRESSED]トリガーによって変数 {respawn} =1となり、リスポーンロジックが発動します。
リスポーンの待機時間の間に、再度Rキーを押すと、再び[ON KEY PRESSED]トリガーによって変数 {respawn} =1が代入されます。
この時、システムは現在のリスポーンロジックを中止し、再度リスポーンロジックを最初から実行します。
その結果、Rキーを連打し続けると、システムはリスポーンロジックを何度も最初から実行しようとするためロジックが進みません。
ボタンの連打はプレイヤーの操作なので注意すれば済む事ですが、リスポーン中にHPが尽きた場合も同様の現象が起きます。
このリスポーンの重複を防ぐためにこのような設計になっています。
|