http://yugito.bangofan.com/unrealengine5%E5%82%99%E5%BF%98%E9%8C%B2/%E3%80%90%E5%82%99%E5%BF%98%E9%8C%B2%E3%80%91%E8%BF%91%E3%81%A5%E3%81%8F%E3%81%A8%E8%A6%8B%E3%81%A4%E3%82%81%E3%81%A6%E3%81%8F%E3%82%8B%E3%82%A2%E3%82%AF%E3%82%BF【備忘録】近づくと見つめてくるアクタ
2か月くらい前からUE5をはじめてます。
まずは簡単な習作を作ろうといろいろ調べていく過程で、思いついたことや試したことをネットの海に流していきます。
LookAtでプレイヤーを見つめてくるアクタの作り方は公式のドキュメントにも解説があるのですが、「ある程度近づくと見つめてくる」アクタの作り方は調べても見つけられなかったので試してみたものをメモしておきます。
【備忘録】近づくと見つめてくるアクタ
文章で説明するより実際のノードを見てもらうのが早いと思うので画像を貼っていきます。
【アニメBPイベントグラフの設定】
まずはアクタに設定するアニメBPのイベントグラフ。
下のほうは公式でも説明がある部分です。ここでプレイヤーの位置を取得します。
上のほうが今回のメイン「近づくと」を設定する部分です。
新しく「ActorPlayerDistance」という名前でfloat変数を作成し、IsValid?を挟んでセットします。
※IsValid?がないと動作はしますがエラーが出ます。
アクタとプレイヤーの距離を取得し、取得した値を割り算(divide)の下のピンにつなぎ、上の数値には「このくらいの距離まで近づいたら見つめてきてほしい」という値を設定します。
※例では100にしています。
割った値を「ActorPlayerDistance」としてセットします。
【アニメグラフの設定】
アニメグラフで設定した「LookAt」のAlphaに先ほど設定した「ActorPlayerDistance」をつなぎます。
例では頭・胸・腰の三か所にLookAtを設定しています。
【結果】
近づくと見つめてくるけど…
離れると視線を外す。
そんなアクタができました。
【追記:LookAtを複数設定した場合の角度補正について】
「LookAt」を複数に設定すると微妙に目が合わない事に気が付きました。
画像の例では首と目に「LookAt」を設定しています。
…これはおそらく、プレイヤーがアクタから見て10°の位置にいる場合、首と目の両方に10°の回転がかかり、結果的に20°の回転がかかってしまっているせいだと思います。
というわけで、下の画像のようにAlphaにつなげる変数を「LookAt」の数だけ除算します。
※画像の例ではノードは3つですが、左右の目の回転は影響しあわないので1つのノードとして考え、2で除算しています。
除算することで各ボーンの回転が修正されて、ちゃんと目が合うようになりました。
PR