【RPG制作その3】キャラクターに攻撃イベントを追加してみよう【UE5】

どうも~、あああああです!

今回はやることは、

  • キャラクターの攻撃ボタンの追加
  • キャラクターの攻撃アニメーションの追加


この2つです。頑張っていきましょう!

前回の記事はこちらになります。忘れた方は一度確認しておきましょう!

関連記事

どうも~、あああああです。 今回はやることは、 キャラクタースポーン地点の設定 キャラクターの外観変更 この2つです。頑張っていきましょう! 前回の記事はこちらになります。忘れた方は一度確認しておきましょう! […]

キャラクターの攻撃ボタンの追加



まず初めに攻撃イベントを実行するためのボタン(キー)を設定していきましょう。
上の”編集”タブから”プロジェクト設定”をクリックします。



左の項目の中を少しスクロールすると、エンジンの中にインプットというものを見つけることができると思います。インプットクリックして、”アクションマッピング”の横にあるプラスボタンを押すと、新しいアクションマッピングを追加できると思います。



追加できたら、画像のように、アクションマッピング名を”Attack”と名付け、キー設定は下矢印みたいなマークから”Eキー”を選択します(もちろん他のキーでもokです)。

ちなみに、キーボードのマークをクリックした状態で自分の設定したいキーを押すことでキーを設定することもできます。(こっちの方が簡単かも)



今回設定したEキー以外に追加で設定したい場合は、追加したいアクションマッピングの横にあるプラスボタンを押すことで2つ以上のボタンを設定できます。キーボードだったら”Eキー”、PS5などのコントローラーだったら”○キー”とかいうこともできます。

ついでに説明すると、右に4つ並んでる”Shift”とかのチェックボックスは、設定したキー+そのキーを押さないといけないかどうかを設定できます。よく使われる例だと、”W,A,S,Dキー” + “Shiftキー”でダッシュ(走る)操作とかを作る時などに使用します。

キャラクターの攻撃アニメーションの追加


攻撃ボタンの準備ができたので、次に、自分が作ったキャラクターに攻撃イベントを追加することからやっていきましょう!今のままでは、”Attackボタン”は作ったけど、肝心の”Attackボタン”の中身がなにもない状態です。

イベントを追加するには、ブループリントというものを使用します

ここで一度、ブループリントというものが何者なのかの説明をしていきます。(超重要)

ブループリントとは?


ブループリントは、日本語で設計図という名の通り、設計図のような使い方をします

なんの設計図なのかという話なのですが、基本的にはプログラムの設計図だと思って大丈夫です。UE5では、このブループリントにプログラミングの設計図を書くことで、直接プログラミングをしなくても、ブループリントを元にUE側でプログラムを作成してくれるので、ブループリントを作成するだけでゲームが作れちゃうという代物です。


実際にブループリントを見てみましょう。前に作った”MyContents”フォルダの”MyCharacter”をダブルクリックして開きます。

前回のキャラクターの外観を変更する作業でも開きましたが、このウィンドウの真ん中にあるのが、ブループリントの中身になります。
既に色々書いてありますが、これは、UE5側がテンプレートとして用意したもので、最低限キャラクターを動くようにブループリントに書かれています。

今回はこのブループリントに攻撃イベントを追加していきます。


まずは、ブループリント内で右クリック ⇒ 検索欄に”カスタム”と入力するとでてくる、”カスタムイベントを追加”をクリックして作成します。



クリックしたら、右に出てくる詳細から名前を変えておきます。今回は、カスタムイベントの名前を”AttackEvent”としておきましょう。グレーの四角みたいなのが作られればOKです。



続いて、先程作成したAttackボタンを追加します。カスタムイベントと同じように右クリック→検索欄に”Attack”と入力して”インプットアクション Attack”を追加しましょう。 “AttackEvent”の枠が小さい場合は、赤く囲っている右下の部分をクリックしながらマウスを動かすことで、大きさを変更できます。



追加できたら、次はアニメーションを追加します。今までと同じように、右クリ→検索欄に”Play Anim Montage”と入力し、”Play Anim Montage”を追加します。(右クリした後、下にあるAnimationタブ押すとその中にあるので、こっちのやり方でもOK)

追加した後、”Play Anim Montage”の中にある”Anim Montage”をクリックし、”Primary_Attack_A_Medium_Montage”を選択します。(画像2枚目)



最後に、インプットアクションAttackの”Pressed”の横にある白い三角みたいなのをクリックして”Play Anim Montage”の一番上の白い三角に繋げます。これで、Attackボタンを押した時に攻撃アニメーションが行われるようなブループリントの作成ができました!

忘れず保存を押して、試しに緑の三角を押して実行をしてみましょう。



無事にキャラクターが攻撃アニメーションを行うことができたでしょうか?ここで完成でも良いのですが、今のままではボタンを高速で押すことで、キャラクターも高速で攻撃アニメーションをしてしまいます。

このままでは最強キャラクターになってしまうので、攻撃と攻撃の間に間隔をもたせましょう。



下の画像と同じものを作っていきます。それぞれの意味は後から説明をします。

今までと同じように右クリ→検索の手順で見つかると思います。それぞれの検索方法を説明しておくと、(画像の番号とリストの番号が対応しています)

  1. “Get Is Attacking”で検索
  2. “ブランチ”で検索
  3. “Set Is Attacking”で検索
  4. “Get Anim Montage”で検索
  5. 右クリで出てくるウィンドウの右上にある”状況に合わせた表示”のチェックボックスを外してから、”get default blend out time”と検索
  6. “Delay”で検索
  7. ②と同じ

⑥だけ手順が違う理由は、”状況に合わせた表示”をオンにすると、白い三角で繋げるものを省いて検索をしています(今回の場合だと、⑥は青い丸と緑の丸で接続している)。

基本的には、”状況に合わせた表示”はオンにしておきましょう。(検索結果が多く出て混乱する)

“状況に合わせた表示”をオンにしなくても、”Anim Montage”から適当に青い線を伸ばして離す(どこにも接続しない)と、“Anim Montage”にとって状況に合わせたものを表示することになるので、問題なく”get default blend out time”が出てきます。(将来的にはこのやり方を推奨)


全て追加できたら、画像のように線をつなげてみましょう。(3番のチェックボックスにチェックを入れるのを忘れずに…)

保存をしたらもう一度実行をしてみましょう。攻撃する間隔がどれだけボタンを連打してもある程度までしか連発できないようになっていると思います。


今回作成したブループリントの仕組み


一応今回の作業は終了なので、もし余力や興味のある方は御覧ください。

ここでは、今回作成したブループリントがどういう仕組みになっているか簡単に説明します。

攻撃間隔を作ったブループリントは最初に作成した”攻撃ボタンを入力→攻撃アニメーションを実行”の間に攻撃アニメーションをしている間は、攻撃アニメーションを行わないという仕組みを作っています。

この仕組自体には気づいている人も多いと思うので、どのようにやっているかというと、

  1. 攻撃ボタンが押された時に”Is Attacking”によって、攻撃しているかを判定

    “Is Attacking”は、

    ・攻撃していたらオン(True)
    ・攻撃してなかったらオフ(False)

    になるようにしている(“Is Attaking”はプログラムではbool値と呼ばれるもの)。

    初めて攻撃ボタンが押されたときはもちろん”Is Attacking”はオフ(False)

  2. ブランチは分かれ道みたいなもので、今回だと、

    “Is Attack”がオフ(False) → ”Is Attack”をオン(True)にする。
    “Is Attack”がオン(True) → ここで終了。(Trueの先に道を作ってないため)

  3. “get default blend out time”はアニメーションの時間を取得している

    なぜ”Play Anim Montage”から直接”get default blend out time”に繋げないかは今後説明しますが、簡単に言うと、こっちの方が使い勝手が良いからです。(使い勝手について説明すると長いので今回はこのへんで勘弁を…)

  4. “Delay”で③で取得したアニメーションの時間分だけ遅れて”Is Attacking”をオフ(False)にしている。

  5. この一連の流れを攻撃ボタンが押されるたびに繰り返している。


と、まぁ簡単に説明するだけでも結構な分量になってしまいましたが、こんな仕組みで攻撃間隔を空けさせています。プログラミングしたことない人からすると、「こんな簡単なことにこんな複雑なブループリントを書かなければいけないのか!?」と思うかもですが、慣れてくればこんなものはすぐにできるようになります。少しずつ慣れていきましょう!


今回は以上となります。お疲れ様でした~!このまま作業を続ける方はこちらからどうぞ~

>最強のゲーム開発環境「UNRIAL ENGINE」

最強のゲーム開発環境「UNRIAL ENGINE」

Unityに並び多くの企業が導入し始めている「UNREAL ENGINE」

ゲームを作りたいけどどうやって作ればいいのかわからないというような人に向けて、ここではこのUNRIALENGINEを実際に使ってケームを開発している人(自分も含め)から開発する上で必要な知識をすべてあなたに差し上げます。

CTR IMG