これはBabylon.js アドベントカレンダー2022の記事です。
今回は、先月作ったソードアートオンライン風のオブジェクトが消えるエフェクトをもとに、簡単なシューティングゲーム風画面を作る方法を解説します。
- 1. Grid Materialを使ってサイバー風の画面を作る
- 2. 弾を飛ばす処理を作る
- 3. 弾がターゲットに当たったらエンカウントとして、ターゲットの名称とHPバーを表示させる
- 4. 弾がターゲットに当たったらHPバーが減る処理を作る
- 5. ターゲットのHPがゼロになったら光が散るエフェクトを発動させる
- 6. おまけ
- 7. おわりに
1. Grid Materialを使ってサイバー風の画面を作る
平面と空中に浮かべたオブジェクト、およびskyboxにGrid Materialをつけます。このPlaygroundの記述をほとんどそのまま使わせていただきました。
https://playground.babylonjs.com/#1UFGZH#12
2. 弾を飛ばす処理を作る
こちらをご参照ください。
3. 弾がターゲットに当たったらエンカウントとして、ターゲットの名称とHPバーを表示させる
こちらをご参照ください。
4. 弾がターゲットに当たったらHPバーが減る処理を作る
3の記事をご参照ください。
5. ターゲットのHPがゼロになったら光が散るエフェクトを発動させる
以前作った処理を見直して、boxやsphereなどの基本図形だけでなく、任意のオブジェクトでも光が散るエフェクトを作りました。
これらを元にして、一通り動くようにしたのがこちらです。十字キーで移動、キーボードのAを押すと弾を発射します。
中央のUFOに弾をぶつけると、HPバーが表示され、HPがゼロになると光となって散ります。
https://playground.babylonjs.com/#M9VSTJ#12
詳しいコードはPlaygroundの中に書いてあるのでご参照ください。
6. おまけ
Babylon.js forumで、別の人の話題の中で取り上げられました。
元の質問者がExploded View (放射状にパーツが広がるようなView) を作る方法について質問していて、派生版の例として紹介されています。
7. おわりに
うまく工夫するといろいろなことができて面白いです。機会あればもう少し本格的なゲームも作ってみたいと思います。