【UE4】Aボタンを押して、キャラに話しかける

これまで、メッセージダイアログとキャラクターの配置を行ったので、次はこのキャラクターに対してAボタンを押したら会話ができるようにしていきたいと思います。

あわせて読みたい
【UE4】Part28 メッセージダイアログを表示する メッセージを表示するダイアログを作成したいということで、ネットで方法を調べてみたのですが、自分で作るには大変そうなことがわかりました。 英語での解説動画ならあ...
あわせて読みたい
【UE4】VRoid Studioで作成したキャラを配置する 今回は、VRoid Studioという3Dモデル作成ソフトで作成された3DモデルをUnreal Engine上に配置したいと思います。 VRoid Studioは、手軽にキャラクターを作成することが...
目次

キャラクターと会話する仕組み

まず、簡単な仕組みを説明します。

Aボタンを押したタイミングで、キャラクターからレイというものを飛ばし、当たったアクターのイベントを実行します。

このレイを飛ばす処理は、ThirdPersonCharactorに記述し、会話ブループリントは設置したキャラクター側に記述します。

キャラクターに記述したイベントを実行する方法として、アクターにダメージを与える方法で行っていきます。

ThirdPersonCharactorからレイを飛ばす

まず、Aボタンを押した時のイベントを作成するので、「プロジェクトの設定」から、Aボタンの設定を行いましょう。

次に、ThirdPersonCharactorのブループリントを開きます。

以下のようにブループリントを作成していきます。

説明では、レイを使うと書きましたが、レイは一本線で当たり判定が狭くなってしまうので、BoxTreaceを使用します。

レイトレースでは、キャラから線が1本伸びるのですが、ボックストレースでは、立方体が伸びます。どちらも内容的には同じで、当たったActorを取得できます。(複数検知されず、これは最初に当たった1つのアクターのみが取得されます)

尚、説明上ではレイという言葉を使用していきます。

Capsule Componentから、一定距離だけレイを出します。距離は、Endに繋がっている ×300の部分になります。

ボックスのサイズは、Half Sizeの X30.0 Y30.0です。

一番右のApply Damageでダメージを与えます。

イベントはダメージを受けた側に書くのですが、0ダメージだとイベントが発生しないので、必ず0より大きくしてください。

キャラクターブループリントの作成

次にキャラクターのブループリントを作成していきます。

コンテンツブラウザで右クリックして、ブループリントクラスを追加します。

今回は、親クラスをCharacterを選びます。

左側のメニューから、Meshを選択し、右側のメニューのメッシュの項目から、Skeletal Meshを設定します。

以下のような感じでズレてるはずなので、位置を調整します。

また、下図の赤い矢印と重なってる水色の矢印が正面なので、向き90°動かします。

以下のようになればOKです。

次にイベントグラフを開きます。

以下のようにイベントを作成します。

このAnyDamageイベントは、ダメージを受けた時にイベントが発生します。

試しに、キャラに向かってAボタンを押して、メッセージが出たら成功です。

もし、メッセージが出ない場合は、キャラクターブループントのCan be Damagedにチェックが入っているか確認してください。

また、レイのサイズや距離も確認してみてください。

あとは、Print Stringの部分を会話のブループリントに差し替えます。

ついでに、SetActorRotationも設定しておきます。(話しかけた方に向きを変えます)

これで会話処理が作成できました。

まとめ

今回は、レイトレースを使用して、キャラクターと会話できるようにしました。

Tickでレイトレースすれば、会話できる人の方を向くとAで会話 とか表示を出したりできそうです。

次回は、キャラクターの上にキャラ名を表示できるようにしたいと思います。

目次