ふと、僕も他の猛者みたいに Power Apps でゲームを作ってみようと思い、さっそくインベーダーゲームを作ってみました。
Power Apps で作るインベーダーゲーム。ゲームとしてちゃんと作っていくとクリアするのが難しくなってきた。#jppug #jpaug pic.twitter.com/KKj3cBWKuo
— Ota Hirofumi (@hrfmjp) February 2, 2020
ゲームを作りながら学んだノウハウをいくつかに分けて Qiita に書き残しておこうかと思います。
#ゲーム内タイマーを作る
ゲームのようにアニメーションなどを行いたい場合はタイマーがあると便利です。そこで Power Apps で作るゲーム作成でもタイマーを作ります。
##タイマーコントロール
Power Apps には「タイマー」コントロールが用意されていますので、基本的にはこちらを利用します。
このタイマーコントロールは Value プロパティとしてタイマーが動き出してから 1/1000 秒単位の経過時間を返してくれます。が、大きな問題点としてその値の精度は 1/1000 秒単位ではありません。値を観察していると、下二桁は「00」または「50」のいずれかになるようです。
これは良くありませんね。とは言えそもそも 1/1000 秒単位での精度を求めるゲームを作るつもりもないので、ここは割り切って次の値を使おうと思います。
Timer1.Value/50
Timer1 はタイマーコントロールの名前ですね。50 で割ることで、この値はタイマーがスタートすると 0 から 1 ずつシリアルに増加する使いやすい値になります。
##タイマーの値はスライダーコントロールに保持する
ゲームの作成を進めるにあたって、タイマーにより作られた時間を色んな場面で参照しなくてはなりません。必要な度にタイマーコントロールから値を取得するのも良し、なのですが、Power Apps の「スライダー」コントロールを使うと便利でした。
このスライダーコントロールの「Default」と「Max」プロパティに先ほどの計算式を入れておきます。
するとどうでしょうか?タイマーが動き出すと、このスライダーコントロールの「Value」プロパティが自動的に 0 から 1 ずつ増えていきます。Power Apps では、計算式に含まれる値が変化すると自動で再計算が行われるためです。この動作に慣れておくと、Power Apps でのアプリ作成がとても楽になります。
また、値が増えるたびにスライダーコントロールの「OnChange」が実行されるため、時間が変わったら何かするといった処理も加えることができます。
#まとめ
Power Apps でゲームを作るときに「タイマー」コントロールをそのまま使おうと思うと使い勝手がよくありませんでした。そこで精度を落とした自作タイマーを作ることにしました。
その自作タイマーを作るときにスライダーコントロールを活用すると、値を取り出すのも便利で、かつ、時間によって何かの処理を実行できる便利なタイマーを作成できました。
といった形で、またいくつかゲーム作成時に考えたノウハウを投稿していきたいと思います。