フロッガーゲームを作る

フロッガーゲームとは、カエル(プレイヤー)が危険な道を渡り、ゴールに辿り着くというゲーム。

フロッガーゲームの移動、カメラ位置などは以下のURLを参考にして進める。

3Dを使ったゲーム開発になるのだが、位置がどのようになっているのか理解するのに苦労した。
自分の中では、xは横の移動、yは縦の移動、zは奥手前の移動になる。
このゲームではタイルを敷いて、その上にプレイヤーを置くので、タイルをiとjで表現する。
つまり、プレイヤーの移動はxはiと連動し、zはjと連動する。
またプレイヤーの位置をx, z
だと分かりにくいので、i, j
で表現することにする。

3Dを使ったゲーム開発になるのだが、位置がどのようになっているのか理解するのに苦労した。
自分の中では、xは横の移動、yは縦の移動、zは奥手前の移動になる。
このゲームではタイルを敷いて、その上にプレイヤーを置くので、タイルをiとjで表現する。
つまり、プレイヤーの移動はxはiと連動し、zはjと連動する。
またプレイヤーの位置をx, z
だと分かりにくいので、i, j
で表現することにする。

bevy
のCamera3dBundle
にはlooking_at
というメソッドがあるのだが、そこに入れる値を参照することができない。
そのため、コンポーネントを用意し、カメラに登録し、構造体にフィールドを持たせて、そこから参照する方法がある。

bevyの衝突判定だが、2dの方にはあるのだが、3dにはないらしい。
仕方がないので自分で実装してみた。
「ないから作った」と言っても単純なもので、プレイヤーと障害物の位置とサイズを取得し、これらの値の範囲に入ったら...みたいなものなので実装は簡単なものだ。
変更内容は以下の通りだが、一見すると簡単なものだが、ここまでに至る経緯には手を焼いた。
https://github.com/ittokun/bevy-games/commit/d3a200dea5c0f2e31389e01bffa9be244ad85a16