Flutter/Flameチュートリアルのエンバークエストをやってみる
こういうのをやりたかったんだー!横スクロールアドベンチャー!
HUDって初めて聞きました。
ヘッドアップディスプレイはゲームプレイ画面にオーバーレイで表示しているスコアとかステータスとかを表示してるヤツのことみたい。
アセットの登録
動いたw
かわいいな。。。
動き回れる世界を作るっぽい…。
セグメントという言葉が使われていましたが、これが1画面内のオブジェクトの配置を表しているものみたい。ゲーム開発用語なんですかねえ。
少しどこのコードをいじっているのかわかりにくかったので、githubのコードを直接参考にしながらやりました。
結構長かったですが、無事に表示できてよかったです…!
他のも表示していこう、みたい。
画面的にはドラマチックになっていって、たのしいところかも。
onLoad時にaddで効果を足していく感じなんですね。
サイズエフェクトでドクドクしてるように見せてます。
(gif化したらループの接続がヘン、ごめん…。)
MoveEffectでうろうろも表現できるのか…。
インベーダーとか、作れそうw
今までと同じ方法で地面を表示してます。 ここで一旦保存してから次に行きます。
次の画面の読み込みのところまでやりました。
よく見ると敵の下がなんか空いていますね…見直さないと…。
ソースを見比べてみたら、↓が違いました。なんか意図があってそうなってたのかな…。
次は…動き…!!
ゲームらしくなってきた…!
床との衝突とジャンプの追加。
最初、オブジェクト同士の中間点の計算式を間違えて、床をすり抜けてました。
おお…それっぽいそれっぽい…!
スクロールを追加。
あれ、敵がついてくる……。
どっか指示を読み飛ばしたかな><
直った…!
water_enemyのupdateがonLoadの関数内関数になってた><
次はHUD、点数表示とかライフとか…!
HUDの表示…!
HUD用のコンポーネントをFlameは特別に用意してないみたい。
表示位置を設定できるPositionComponentで、スマホに表示される場所に固定してる感じ。
positionType = PositionType.viewport;
PositionType.widgetを選べば、ゲームのスクロールにあわせて流れる、ヘルプっぽい表示もできそう?
なんとなく気に留めておこ。
HUDの更新。
敵に当たるとハートが減ったり、星を取るとスコアが増えたり…。
メニューの追加。
メインメニューの追加。
普通のFlutterのWidgetで作ってますね…。
メニューを追加して、チュートリアルおしまい!
音楽とか効果音はないので、ここから自分で探して追加する感じかなぁ。
あと、せっかくなので、スマホに入れて誰かに見せたいので、タップでコントロールできるようにしたい…。
emberの手足のないカタマリ的な姿は、チュートリアルにピッタリだったんですね。
手足があったら状態がいっぱいあって、コードがめっちゃ複雑になってたもん…。
- 立っている
- 息を吸う
- 息を吐く
- 歩いている
- 右足前
- 足真ん中
- 左足前
- ジャンプしている
このあとやりたいこと
- SE
- BGM
- プレイヤーキャラクターの交換(立つ、走る、ジャンプなどの状態を持つもの)
- 終了時のスコア表示
雑にタスクを挙げたので、いったんクローズしちゃおうかなー。