P5.エアホッケー.08「PUSH SPACE KEY 点滅」
実は「パックを出すにはスペースキーを押す」ってことをプレイヤーに知らせないと、永遠にゲーム画面を眺めているだけになっちゃう。だから、上の図のようにパックが無い時は、画面中央位に「PUSH SPACE KEY」と表示させる。コレで分かるだろ。で、ただ表示させるだけじゃつまらないので、Alternate
ノードをうまく使ってチカチカ点滅してる風にする。
イベント化
❶ まずは、"nKamiGameKanri" に前作った「スペースキー入力でパックを出す」部分をイベントにしちゃおう(イベント名 "TAMADASUka")。On Update
はゲームのメインループとなるので、後に続くノードは処理がすっきり分かりやすく見える様、Send Event
- On Event
で見栄え良くするといいと思う。
❷ で、チカチカさせるイベント(イベント名 "TIKATIKAka")へ飛ばす部分を付けて置いて、
❸ チカチカ本体イベントの中身を作成。これからね。
(見栄え良くするための処理のカタマリなんだが、Send Event
- On Event
で飛ばす(呼び出す)方法の他に、Call Function
- Function
で処理する方法もあるぞ。だが、どうも俺にはうまく使えなかった。だから、俺はカタマリは全部イベントでやっちゃった。へへ。)
タイマー的な何か
チカチカさせるには、❶ カウンタ用の変数("tikatikaA")と、❷ 表示・非表示の時間("tikatikaB":1秒)の2つの情報が必要。ということで2つの数値をOn Init
時にプロパティにセット。カウンタ用の変数もスタート時は1秒ってことで、Float
で1を入れる。
で、肝心の中身はこう。(拡大しても文字ちっさいな、見えるかな??)
❶ 「PUSH SPACE KEY」のイベントは、パックが無い時に発動させるので、"packAru" = False で次に行くようにする。"packAru" = True ならこのまま帰ってもらおう。
❷ カウンタ用変数 "tikatikaA" から delta 秒を引いていく(Subtract)。「tikatikaA = tikatikaA - delta」ってことな。
❸ "tikatikaA" が 0 を切ったら、つまりスタート時点から1秒経ったら次の処理に行くようにする。1秒経ってなかったらここで帰ってもらう。で、1秒過ぎてたら、また delta 秒を引けるように "tikatikaA" に点滅させる時間の初期値("tikatikaB":1秒)をセットする。
❹ Alternate
は出口が2つあって、最初は "0" に処理が行く。次にAlternate
に処理が来た時は "1" に行く。で、又来たら "0" へ・・・。つまり、 "0-1-0-1-0-1・・・" と処理を流すようにするノードだ。面白いな。これを使って、前回作ったキャンバスのエレメント名 "Text8" のテキスト部に、
"0" で出た時は "PUSH SPACE KEY" と入れてやる。
"1" で出た時は ""(空欄)と入れてやる。
Alternate
には約1秒ごとに来るわけだから、これで点滅してるように見える感じだ。(ま、点滅させるには色んな方法があるけど、俺はこうした。)
パック出す時にも・・・
これでテストプレイしてみてくれ。ゲーム開始で、「PUSH SPACE KEY」と点滅するはずだ。イイね。文字の色はキャンバスの方で好きに付けてくれな(俺はピンクにしたけどな、かわいいだろ)。だが、パックが出たとき「PUSH SPACE KEY」という表示が消えずに残るタイミングがある。
なので、"TAMADASUka" イベントの最後の所でも、キャンバスのエレメント名 "Text8" のテキスト部に空欄を入れて、これを消そう。
コレで上手くいくはず。今回はここまでにするかな。
本日のポイント
Alternate
で 0-1-0-1-・・・。
〇 次回、得点を入れていこう。