コルネの進捗や備忘録が記されたなにか

進捗や成果物や備忘録てきななにかを雑に更新していきます。

エネミーを実装する(当たり判定編) ~勉強会資料その11~


スポンサードリンク

このブログはPower Apps でローコーディングな勉強会 #14の資料その10になります。

このブログではエネミーの当たり判定の実装方法についてご紹介致します。

エネミーに当たり判定のオブジェクトを設定する

プレイヤーに当たり判定を追加する ~勉強会資料その9~で紹介したやり方と同じようにエネミーにそれぞれ当たり判定用のオブジェクトを設定します。

エネミーがボムの爆炎に当たった時に消滅するようにする

エネミーの当たり判定にもプレイヤーと同じようにトグルを使用します。
この実装方法ですとエネミーの数だけトグルを設定する必要がありますね。
また、トグルがONになった時にそれ以降エネミーを非表示としたいです。
なので以下のような変数を宣言します。

Screen1.OnVisible

UpdateContext({_Enemy1_1Dethe:false});

こちらの変数、及びトグルを実装した敵の数だけ用意します。
また、こちらの変数をエネミーの"OnVisible"に設定しておいてください。

Enemy1_1Image.OnVisible

!_Enemy1_1Dethe


トグルのDefaultに設定する値はプレイヤーに設定した当たり判定と同じような方法を用います。
なので以下のようになりますね。

Enemy1_1DethJudge.Default

_fireStart &&
((
    ((Enemy1_1Rectangle.X > Fire01Rectangle.X && Enemy1_1Rectangle.X < Fire01Rectangle.X + Fire01Rectangle.Width) ||
    (Fire01Rectangle.X > Enemy1_1Rectangle.X && Fire01Rectangle.X < Enemy1_1Rectangle.X + Enemy1_1Rectangle.Width)) &&
    ((Enemy1_1Rectangle.Y > Fire01Rectangle.Y && Enemy1_1Rectangle.Y < Fire01Rectangle.Y + Fire01Rectangle.Height) ||
    (Fire01Rectangle.Y > Enemy1_1Rectangle.Y && Fire01Rectangle.Y < Enemy1_1Rectangle.Y + Enemy1_1Rectangle.Height))
) ||
(
    ((Enemy1_1Rectangle.X > Fire02Rectangle.X && Enemy1_1Rectangle.X < Fire02Rectangle.X + Fire02Rectangle.Width) ||
    (Fire02Rectangle.X > Enemy1_1Rectangle.X && Fire02Rectangle.X < Enemy1_1Rectangle.X + Enemy1_1Rectangle.Width)) &&
    ((Enemy1_1Rectangle.Y > Fire02Rectangle.Y && Enemy1_1Rectangle.Y < Fire02Rectangle.Y + Fire02Rectangle.Height) ||
    (Fire02Rectangle.Y > Enemy1_1Rectangle.Y && Fire02Rectangle.Y < Enemy1_1Rectangle.Y + Enemy1_1Rectangle.Height))
))

続いて、こちらのトグルがONになったとき、つまりエネミーが爆炎と接触したときの処理を記載します。
エネミーが爆炎と接触したときには、エネミーを非表示にしたいため、以下のように設定します。

Enemy1_1DethJudge.OnCheck

UpdateContext({_Enemy1_1Dethe:true})

これでエネミーと爆炎が接触したときエネミーが消えるようになりました。

エネミーとプレヤーが接触したときの処理を記載する

エネミーとプレイヤーが接触したときは、プレイヤーは初期値に戻り、エネミーは特になにも処理を行う必要はないです。
なので、プレイヤーの当たり判定を行っているトグルにエネミーとの当たり判定の処理を追加します。

プレイヤーとエネミーの当たり判定は以下になります。

(!_Enemy1_1Dethe &&
(
    ((PlayerRectangle.X > Enemy1_1Rectangle.X && PlayerRectangle.X < Enemy1_1Rectangle.X + Enemy1_1Rectangle.Width) ||
    (Enemy1_1Rectangle.X > PlayerRectangle.X && Enemy1_1Rectangle.X < PlayerRectangle.X + PlayerRectangle.Width)) &&
    ((PlayerRectangle.Y > Enemy1_1Rectangle.Y && PlayerRectangle.Y < Enemy1_1Rectangle.Y + Enemy1_1Rectangle.Height) ||
    (Enemy1_1Rectangle.Y > PlayerRectangle.Y && Enemy1_1Rectangle.Y < PlayerRectangle.Y + PlayerRectangle.Height))
))

プレイヤーとエネミーの当たり判定を行うのは、エネミーが表示されているときのみにしたいので、"!_Enemy1_1Dethe &&"となっています。
この式をエネミーの数分追加します。


お疲れさまでした!
以上でPower Apps でボンバーマンが作成できました!!

f:id:koruneko:20200320204950p:plain


今回の説明では簡略化したので説明できなかった機能には以下があります。

  • ボムを複数おけるようする。
  • 爆炎の種類をステージの状態に合わせて変化させる。
  • エネミーをステージの状態に合わせて行動範囲を変化させる。

余力がある方は、上記の実装を試してみて下さい!
また別の機会で上記の実装方法はご紹介予定ですー
質問などお気軽にどうぞ!


スポンサードリンク