カウントダウンの実装方法~前編~
どーも!Free_Gamerです!
今回は、
カウントダウンの実装方法について
説明していきます!
例えば、制限時間があるゲームを作るとして、10秒間の制限時間を設け、0秒になると爆弾が爆発!というゲームを作る場合。
ゲームスタート時、カウントダウンが始まります!
↓
10、9、8・・・時間は迫ってきています・・・!
↓
0秒になり爆弾が爆発!ヒャッハー!芸術はばくはt(ry
↓
しかし、カウントダウンは0秒になっても止まらず、-1、-2、-3・・・と続いてしまいます・・・
正直言っておかしいですよね(笑)
今回はそうならずに0秒になったらそこでカウントダウンを止める処理を紹介します!
ですが、長くなりそうなので今回はとりあえずカウントダウン処理の実装方法をお伝えします(汗)
0秒になったらカウントダウンを止める処理は次回で!
方法は至って簡単です!
必要なもの!
・レベルBP
・Delay
・Integer型変数
・PrintString
・EventTick
たったこれだけです!なので、前回の記事みたいにgdgdになることはないはずです!(絶対嘘)
まず!レベルBPを開きます!
そしたら、EventTickノードを出しましょう!
EventTickノードは毎フレーム呼ばれるイベントです!つまり、EventTickノードにPrintStringをつなげると・・・
画像のように、PrintStringがEventTickによって、毎フレーム呼ばれることになります!よく覚えておきましょう!初めてUE4を触る人がこの記事を見ているかもしれないですからね!
さて!手順に戻りましょう!
EventTickを出したら、次は変数を作ります!何のために作るかというと、カウントダウンの為に使うからです!つまり超重要な主役なのです!
レベルBPで、画面左側の「変数」の項目にある「+」を押し、新規変数を作成しますよ!
新規作成された変数の型を決めます!今回は10秒間のカウントダウンの処理を作りたいので、整数が必要ですね!(整数は1、2,3などの小数点のない数字の事)
なので、整数を扱う場合、Integer型の変数を選びますよ!
画面右側に新規作成された変数の詳細パネルがあるので、詳細パネルの変数の型から、Integerを選びましょう!
そして、変数名は「Timer」とでもしておきましょうか!(まあ名前はお好きにw)
変数を作成したら、作成した変数「Timer」をグラフにD&D(ドラッグ&ドロップ)し、ゲットしセットしましょう!
ゲットとセットの両方出しましたね??
それでは実際にカウントダウン処理を作っていきましょう!
ゲットTimerピンを引っ張り、「ー(マイナス記号)」を入力すると「Integer-Integer」というのが出てくるのでそれをクリックしましょう!
このノードは減算ノードです。つまり引き算をするためのノードですね!
Integer-Integerなので、整数同士の引き算するためのノードですね!
上のAのほうにゲットTimerピンをつなげ、Bのほうには「1」を入れます。
次に、ゲットTimerのデフォルト値を決めます。ゲットTimer変数を選択し、画面右側の詳細パネルの一番下「デフォルト値」の数値を10にしましょう!
※もし、デフォルト値が入れられず、「ブループリントをコンパイルしてください」という表記がある場合、一旦レベルBPをコンパイルしましょう!そうするとデフォルト値を入れられます!
さて!次にセットTimer変数をEventTickとつなげましょう!
画像のようになっていればOKです!
さて、最後にPrintStringをセットTimer変数とつなげて、
セットTimer変数のピンをPrintStringにつなげてあげれば・・・
OKです!
ちなみに、セットTimer変数とPrintStringの間にあるのは自動的に出てくるので安心してください!(セットTimer変数のピンをPrintStringのピンにつなげば自動的に出てきますよ)
さて!このBPの流れを整理すると、
①ゲーム開始時EventTickが毎フレーム呼び出される
②一回呼び出されるごとにTimer変数が計算を開始
③計算結果をPrintStringで表示
です!
それではやってみましょう!
・・・・・・実際にやってみるとものすごい勢いで計算が行われているせいで一瞬にして0以下になりました。
ですが、一応しっかり計算が行われていることはわかりましたね!
しかし、これだけ早いとカウントダウンとしてははっきり言って使えないですよね。だって早すぎですもの(笑)
なので、次はしっかりとした感覚でカウントダウンを行いたいと思います!
非常に簡単です!
Delayノードを使えばいいのです!
DelayノードはDurationに入れた秒数だけ遅延を発生させます。
このノードをEventTickとセットTimer変数の間に入れますよ。
そして、DelayのDurationには「1」を入れましょう!
つまり、1秒置きにカウントダウンを行ってくれるので、今度はいい感じのリズムでカウントダウンが行えると思います!
コンパイルし、実際にプレイしてみましょう!
動画のようになったのなら大成功です!
しかし、肝心の「0になったらカウントダウンを止める」の処理ができていませんよね。
その実装に関しては、次回掲載いたします!
それではまた!^^ノシ