【Bakinでアクションゲーム開発】遠距離攻撃(弓矢を放つ)を実装してみる

Bakin

前回までの流れ

私は個人でゲーム開発をしており、Bakinを使って作成したゲームはふりーむ様でも公開しています。

実際に遊んでみてもらえると嬉しいですが、具体的にどんなゲームなのかは以下の動画を見ていただくだけでも分かると思います。
前回の記事(以下参照)ではアクションゲームを作成する際において、プレイヤーと敵キャラクターの双方に攻撃を受けた際のダメージ処理を追加しました。

今回の記事では弓等の遠距離攻撃の実装方法について解説していきたいと思います。

Bakinで遠距離攻撃(弓)を実装してみる

アクションゲームでは剣で攻撃するといった近接攻撃と弓や魔法等で攻撃するといった遠距離攻撃が主に登場するのが普通です。

基本的にはそれぞれ特徴を持たすために近接攻撃は威力が高かったり、遠距離攻撃は攻撃に弓矢やMPを消費する等でバランスを取ることが多くなります。

いずれにせよアクションゲームを作るにあたっては遠距離攻撃の実装はほぼ必ず必要となってくるため、今回は弓での遠距離攻撃を実装していきます。



先ず、用意するのは「遠距離攻撃アクション」「攻撃判定_弓矢」という2つのキャストとなります(キャスト名は好きに変更してください)。
「遠距離攻撃アクション」のキャストは前回までの記事で実装した、「近接攻撃アクション」をコピー&ペーストして流用してください。

キャストイベントの中身は次の画像のように作成します。
プレイヤーのモーションはデフォルトで用意されている「attack_C_01」という弓を放つモーションを使います。

そして、そのモーションの後には「攻撃判定_弓矢」という実際の攻撃判定を飛ばすキャストのイベントを生成します。

この「イベントを生成する」というスクリプトは今後のゲーム制作の上で非常に重要になってきますので、今回の経験を通して理解しておくことをお勧めします。

その後は近接攻撃よりも少し長めの停止時間を経てプレイヤーの操作を出来るように戻しておきます。

キャストイベントはこれくらいですが、キャスト設定の「その他」の項目では「経過時間」による消滅を少し長めに設定しておくことをお勧めします。

そうしないとキャストイベントを全て実行する前に先に消滅してしまい、プレイヤーの操作が出来ない状態で固まってしまう等のバグが起きる可能性があります。
次に「攻撃判定_弓矢」のキャストについてですが、こちらのキャストが実際に弓から放たれる弓矢として、敵に飛んでいくものとなります。

前回までの攻撃判定と違って、こちらも「その他」欄の消滅までの「経過時間」は1秒くらいの長めに設定しておいてください。

そうしないと、弓矢が飛んでいる中にすぐに消えてしまう等の問題が起きますので。
こちらのキャストイベントはとてもシンプルで、効果音を鳴らす、弓矢として地上の少し高めを飛ぶように設定する、実際にイベントを動かすという3つのスクリプトだけで構成します。
効果音は好きなものを設定して構いませんが、「イベントのY座標を変更」というスクリプトは一度設定すると、そのY座標(高さ)に固定されるという処理になります。

そのため、この実装方法だと矢が水平方向にしか飛ばせないため、飛んでいる敵を攻撃するには自分もジャンプする必要があります。

本当なら上にいる敵の方向の斜めを向いて攻撃するのが格好いいとは思いますが、その実装は結構面倒になってくるので、一旦はこの実装方法で我慢してください。

最後に10マスイベントを歩かせていますが、この「10マス」というのが弓矢の射程距離になっています。

もし、もっと飛ばしたいのであれば「20マス」等にしても構いませんが、その際は消滅条件の「経過時間」も併せて意識をしないと途中で消える可能性があることを覚えておいてください。

最後に弓矢の移動時のグラフィック設定ですが、これを設定しておかないと透明な攻撃判定が敵に飛んでいくだけとなってしまい、ゲームとしては成り立ちません。

しかし、デフォルトのBakinには手ごろに飛ばせる弓矢のグラフィックが無いので、そこが悩みどころとなってきます(こういう基本的な物は正直最初から用意しておいて欲しい)。

とりあえず今回はBakinを購入した際にセットで購入することを勧められる「SMILE GAME BUILDER Pack」の中にある「magicstick」を設定しました。

正直、弓矢っぽく見えるものであれば、本来の用途とは違うものでも設定して問題ないと思います。

「SMILE GAME BUILDER Pack」を購入していない人はフリーの画像から弓矢っぽい画像を持ってきて、リソースとして登録する必要がありますが、多少面倒だとは思います。
最後に敵キャラクター側にも弓矢を受けたときのダメージ処理を実装します。

「ゴブリンA」のキャストイベントの「ダメージ処理」シートに近接攻撃を受けたときの処理をそのまま流用して、最初の「接触状態の確認」の条件を「攻撃判定_弓矢」に変更するだけでOKです。
ここまでの実装を全て組み込み終わったら、後はテストプレイしてみて動作が想定通りに動くか確認してください。

上手く実装できていれば、プレイヤーが弓を放ち、それがゴブリンに当たるとダメージが入る動きが実現できているはずです。

まとめ

今回はBakinで遠距離攻撃を実装する方法について解説しました。

前回までの記事と合わせて、近距離攻撃・遠距離攻撃を組み込んだゲームが実現できるようになったと思います。

今後もBakinでゲームを作成する方法は解説していきたいと思いますので、興味があれば閲覧ください。

Canvaで簡単にマンガを作る方法 AIイラストで誰でもマンガ家になれる時代! – センコの活動記録 (senkohome.com)

コメント

タイトルとURLをコピーしました