前回までの流れ
私は個人でゲーム開発をしており、Bakinを使って作成したゲームはふりーむ様でも公開しています。
実際に遊んでみてもらえると嬉しいですが、具体的にどんなゲームなのかは以下の動画を見ていただくだけでも分かると思います。
前回の記事(以下参照)ではアクションゲームを作成する際において、プレイヤーが剣を振るモーションと攻撃判定を発射する部分まで作りこみました。
今回の記事ではモンスターを作成し、プレイヤーが発射した攻撃判定にモンスターが当たった場合は、モンスターにダメージを与える処理を作りこむ方法について解説します。
Bakinで敵キャラクター(モンスター)を実装する
Bakinでアクションゲームを作成するうえで、プレイヤーと同じくらい重要になってくるのが、敵キャラクターの存在です。
敵キャラクターは個性があるほど良いのですが、今回はBakinで無料で使える素材を使ってモンスターを実装していきたいと思います。
キャストのモーションに関して
Bakinではプロジェクト作成時に「最初から入っているアセット量の設定」の選択で「ノーマル」を選んでいた場合は、次のように「データベース」の「キャスト」として、最初からモンスターも登録されています。
しかし、最初から入っているこのモンスター達はRPGで利用する用のものであり、アクションゲームには向いていません。
その理由は「移動用のグラフィック」をクリックした際に表示されるプレビュー画面の右下にある「モーション」の部分を見れば分かります。
「モーション」が「walk」と「wait」しか無いのが分かりますね?この「モーション」という項目は非常に重要で、特にアクションゲームを作るうえでは大切な要素となっています。
Bakinではこの「モーション」に登録されている動作をキャストに行わせることが出来るのですが、逆に言えば「モーション」に登録されていない動きはゲーム上で使えません。
そのため、もしも敵キャラクターの攻撃を実装しようとしたときに、そのキャストに攻撃モーションが無い場合、無動作でいきなりプレイヤーを攻撃する不自然な敵を実装することになります。
プレイヤーから見た場合に無動作でイキナリ攻撃してくる敵は理不尽の塊であり、ゲームを遊ぶうえで多大なストレスと不快感を与えてしまうことは想像出来ると思います。
魔法等のエフェクトと合わせれば、一応そういった敵キャラクターの実装も出来なくはないのですが、基本的には敵は攻撃モーションをしたうえでダメージを与えてくる方が自然なゲームが作れます。
他のキャストも確認してみれば分かりますが、Bakinのデフォルトで入っているキャストとしては、プレイヤーとその仲間用に作成されているキャスト達に様々なモーションが実装されています。
例えば、前回の記事で剣を振るモーションを実装した「hero」のキャスト「勇者A」であれば、攻撃モーションからダメージを受けた際のモーション、ベッドで眠るときのモーション等、多数のモーションが用意されています。
このようにモーションが細かく用意されている素材ほど、Bakinのアクションゲーム作成において利用できる幅が非常に広いことを覚えておいてください。
ここまでの話を聞くと、デフォルトの素材ではモンスターのモーションがほとんど無いので、敵キャラクターとして使うのは人間のキャストの方が良いのではと考える人もいるかと思います。
安心してください。Bakinの無料DLCとして最初から導入されている「3D Monster Pack Vol.1」という素材集のモンスターであれば、様々なモーションが実装されています。
敵キャラクター(モンスター)の作成
それでは実際に敵キャラクターとして使用するモンスターを作成していきたいと思います。
先ずはBakinのマスターメニュー画面の「リソース」から「3Dスタンプ」を選択した状態で、「+追加」のボタンを押してください。
そうするとリソースとして追加したい3Dスタンプの素材(アセット)を選ぶ画面が出てきますので、「追加メニュー」の中にある「3D Monster Pack Vol.1」を選択して下さい。
尚、もしこの一覧の中に「3D Monster Pack Vol.1」が無い場合は、Bakinを再起動して「素材ショーケース」の中からダウンロードすれば出てくると思います。
「3D Monster Pack Vol.1」には様々なモーション付きのモンスターの素材が入っていますが、とりあえず今回は「3Dモンスター」のフォルダ自体を選択して「追加して終了」を押してください。
本来は必要な素材だけを選んでリソースを追加する方が良いのですが、この程度の量であれば動作が重くなるほどでもないので、モンスター素材を全て追加しても問題ありません。
また、Bakinは実際にゲームとしてパッケージする際に使っていない素材を削除することが出来るので、ゲーム作成に支障がない範囲であれば素材は全て追加しておく方が使用時に楽が出来ます。
リソースの追加が正常に完了すると、次のようなインフォメーションが表示されますので、「OK」を押してください。
次に「データベース」の「キャスト」の項目を表示て、左上側にある「+追加」を押すことで、キャストを追加します。
そうするとキャストに設定する素材(アセット)を選択する画面が出てきますので、「データベース/リソース」の「3Dスタンプ」の中にある「3Dモンスター」フォルダから「ゴブリンA」を選択して下さい。
「ゴブリンA」を選択したら「追加して終了」を押してください。
そうすると「キャスト」に「ゴブリンA」が追加された旨のインフォメーションが表示され、実際にキャストとしても「ゴブリンA」が追加されます。
これで様々なモーションを持った敵キャラクターの作成が完了しました。
次にこのモンスターに攻撃する際のモーションと攻撃判定の発射を作り込みたいと思います。
敵キャラクター(モンスター)をマップ上で動かしてみる
敵キャラクターをマップに配置する
先ずはせっかく作成した敵キャラクターですので、ゲーム画面に配置してみましょう。
作成した敵キャラクター「ゴブリンA」はBakin画面の右側にある「イベント」タブの中から「敵キャスト」を選択すると見つかります。
厳密にはキャストの設定欄で「種別指定」で敵なのか味方なのかを設定するのですが、作成したばかりのキャストは敵と味方の「両方」の指定で作成されています。
とりあえず選択した「ゴブリンA」をマップ上に配置してみましょう。配置するには「ゴブリンA」を選択した状態で、マップをクリックするだけです。
配置したら「テストプレイ」を押して、実際にゲーム上で確認してみて下さい。
未だゴブリンの挙動は何も設定していないので、ただ突っ立っているだけですが、モーションが設定されているので、わずかに動いていることが分かると思います。
このように作成した敵キャラクターをマップ上に配置していき、プレイヤーと戦わせることでアクションゲームを作る事ができます。
それでは、次に敵キャラクターの攻撃モーションを作成しましょう。
敵キャラクターの攻撃モーションを作成する
先ずは「データベース」の「キャスト」にある「ゴブリンA」の設定を変更します。
右側に出てくる「ゴブリンA」の設定の中で「基本」タブにある「キャスト管理」欄の「種別指定」を「敵」に変更してください。
この設定を変えることでマップ上に配置する際に「敵キャスト」のみで表示されることになりますし、この後の設定関連で味方と敵を識別することが出来ます。
次にゴブリンが攻撃する際に発射する当たり判定のキャストとして「ゴブリンの攻撃」を作成します。
作成方法は前回の記事でプレイヤーの攻撃アクションを作成した方法と同じなので、詳細は割愛します。
設定については、この「ゴブリンの攻撃」の「種別指定」は「敵」にしておきます。
また、「その他」の設定も基本的にはプレイヤーの攻撃アクションと同様で良いですが、「イベントの消滅条件」の「経過時間」については「0.1」や「0.2」くらいの短めにしておくのが良いです。
この時間が長いと敵の攻撃判定が長く残るため、プレイヤーが理不尽なダメージを受けることが増えるためです。
また、同じく「イベントの消滅条件」の「味方と衝突」を有効にして、「敵と衝突」は無効にしておきましょう。
これで敵キャストと接触しても消滅しませんが、味方キャストと接触すると消滅する攻撃が作れます。
「ゴブリンの攻撃」の「キャストイベント」については次の通りです。プレイヤーの時と違ってこちらは「攻撃時のサウンド」と「攻撃判定」のみを記載しています。
これはプレイヤーと違って普通のキャストは「イベント」として扱われることになるため、攻撃モーション等は「ゴブリンA」というキャスト内のキャストイベントで設定する必要があるためです。
前提として攻撃判定用のキャスト等を実装する際の「イベント開始」については「自動的に開始(並列して1回だけ実行)」にしておいてください。
そして「ゴブリンA」のキャストイベントは次の通りに作成します。今後の汎用性を考えるともう少し複雑な作りにしておく方が良いのですが、先ずは動くことを優先します。
前提としてキャスト等を実装する際の「イベント開始」については「自動的に開始(並列して繰り返し実行)」にしておくことを忘れないでください。
この条件にしておかないと特定のキャストイベントが実行されている間、プレイヤーが動けなくなる等の問題が起きてしまうためです。
そして、「ゴブリンA」のキャストイベントの流れは以下のようにしています。
①プレイヤーに向かって移動する(プレイヤーの方向を向く)
②プレイヤーがゴブリンAと接触しているか判定
②-1プレイヤーが接触している場合は攻撃する
②-2プレイヤーが接触していない場合は何もしない
③1秒間行動を止める
この流れの説明ですが、①は左側にある「移動設定」の「移動パターン」を「動かない」にしているため、そのままだと同じ位置に留まってしまうので入れています。
それなら「移動パターン」を「近づく」にすれば、①の「プレイヤーの方へ2マス歩く」は不要ではないかと思うかもしれませんが、それは出来ません。
左側の移動設定はキャストイベントと独立しているため、移動設定で動かしてしまうと攻撃モーションに入っている最中で勝手に移動が起きてしまい、攻撃モーションがキャンセルされるという事態が起きるのです。
そのため、アクションゲームの敵キャラを作成する場合はキャストの移動設定は原則「動かない」にしておく必要があります。
もちろん、通常のRPGであればキャストがマップ上でモーションを変更することは無いので、移動設定を使って大丈夫なのですが、アクションゲームとして見た場合は利用はおススメ出来ません。
次に②はゴブリンとプレイヤーが接触しているか判定したうえで、接触しているなら攻撃をするという処理ですが、この作り方は潜在的な問題を孕んでいます。
接触している場合だけ攻撃をする仕様は敵の攻撃が十分届く距離であっても、接触しない限りは攻撃をしないということになってしまうので、アクションゲームの敵キャラとしてはあまりにも不自然で弱すぎるのです。
そういった場合の対処方法は後の記事で解説しますので、今回は接触した場合にのみ攻撃する仕様としていることを理解しておいてください。
②-1は前回の記事でも同じような処理を入れましたが、今回はプレイヤーではなく「イベント」に対してモーションの変更とモーション中の停止処理、その後の攻撃判定発生を入れています。
モーション中の停止処理を入れる理由も前回と同じで、停止を入れないとゴブリンが攻撃を振りかぶった瞬間に攻撃判定が発射されてしまい、かなり違和感のある攻撃となってしまうためです。
なので、基本的にはそれぞれのモンスターの攻撃モーションを実際に使ったうえで、どの程度の停止後に攻撃判定を発生させると違和感がないかはデバッグをしながら確認する必要があります(モンスターによって変える必要があります)。
③の停止処理を入れる理由は単純に入れておかないと敵キャラが休みなく高速で動き続けるため、アクションゲームとして敵が強くなりすぎるからです。
強敵等を実装するときはこの停止時間をあえて少なくすることで連続行動させることが出来ますが、今回のゴブリンは雑魚敵なので、1秒ごとの行動が妥当なところでしょう(実装すれば分かりますが、1秒でも結構早い)。
さて、ここまで実装出来たら再度「テストプレイ」をしてみましょう。
そうすると先ほどは動かなかった「ゴブリンA」が生き生きとプレイヤーに向かって攻撃を行う姿が確認できるはずです。
念のため、テスト画面の「オプション」の「コリジョン表示」で「プレイヤーとイベント」をチェックし、ゴブリンの攻撃に合わせて攻撃判定が発生していることも確認してください。
未だプレイヤー側のダメージ処理は実装していないので、ゴブリンが素振りをするだけの動作となっていますが、このように敵キャラクターを実装すれば良いということは理解出来たかと思います。
まとめ
今回はBakinで敵キャラクターを実装し、攻撃モーションと攻撃判定を発射する方法について解説しました。
前回の記事でプレイヤーが剣を振るモーションは作成したので、これで後はプレイヤー側と敵キャラクター側にダメージ処理さえ追加すればアクションゲームとして成立するレベルまで作り込めました。
次回はプレイヤー側と敵キャラクター側にダメージ処理を実装する方法について解説したいと思いますので、興味があれば閲覧ください。
Canvaで簡単にマンガを作る方法 AIイラストで誰でもマンガ家になれる時代! – センコの活動記録 (senkohome.com)
コメント