Godotのバージョンを4.2.1にしました。
Godot4.2.1でシューティングゲームを作っていきます。
ボスキャラBigFireにバズーカを発射させる
ボスキャラBigFireが、バズーカを前方に発射するように実装します。
方針
17回目で全方位弾を追加した時と同じように、ボスキャラBigFileシーンにバズーカ生成用シーンを子ノードとして追加するだけで、一定周期でバズーカを発射するようにします。 追加するバズーカ生成用シーンはボスキャラBigFireの位置情報のみ使用します。
以下の画像で、ボスキャラBigFireの前方にある大きな白い球がバズーカのつもりのものです。そのうちGPUParticles3Dを使って格好よくしたいです。
github
本記事で実装したものをGitHubで公開しています。
修正および新規追加ファイル
生成されると、ただまっすぐ進むだけのバズーカ用のシーン(boss_bazooka.tscn)とスクリプトを新規追加します。また、そのバズーカ用シーンを生成するためのシーン(boss_bazooka_periodically.tscn)とスクリプトを新規追加して、ボスBigFileシーン(boss_bigfile.tscn)に子ノードとして追加します。
バズーカ生成用シーンをボスキャラBigFireシーンに追加する
ボスキャラBigFileは大きなエンジンを左右に2つ持っています。それぞれのエンジンの前方からバズーカを発射するので、バズーカ生成用シーン(boss_bazooka_periodically.tscn)を2つ子ノードとして、ボスキャラBigfireシーン(boss_bigfile.tscn)に追加します。子ノードの名称には左右のどちらかがわかるように、RとLの字を追加しました。
バズーカ生成用シーンのルートノードのMarker3Dは、3Dエディタ上で十字のマークで表示されるため、位置の確認がしやすいという特徴があります。十字の大きさ(線の長さ)はMarker3DのGizmo Extentsプロパティを変更することで調整可能です。初期値の0.25mでは小さくて見にくいので、2.5mに変更しました。
ボスキャラBigFireシーンの3Dエディタを開き、表示を上面図に変更して、追加した2つのバズーカ生成用シーンを大きなエンジンの前方にそれぞれ移動します。
Marker3Dは上面から見ると十字マークですが、X,Y,Z軸方向に線が伸びています。3Dエディタの視点を少し変更すると確認できます。
その他の実装について
あまり新しいことはやっていないので説明は省略します。
ただ前回までの実装では隕石とアイテムとボスが同時に出現するため、敵の攻撃を避けながらアイテムを取るのが非常に難しかったので、ステージシナリオ「res://scenario/scenario_stage01.tscn」を修正して、アイテムを表示して全て消えてからボスのみが出現するようにしました。
実行結果
以上です。