【UE5ゲーム制作講座】ドッジロールの移動量を変更する色々な方法【モーションワーピング】

九里江めいく【ゲーム制作VTuber UE4・UE5初心者向け講座】
16 Jul 202212:16

Summary

TLDRこのビデオでは、ゲームキャラクターのルートモーションをウォーピング(スケーリング)させる様々な方法について解説しています。最も簡単な方法としてスケールを調整する手法、blueprintでルートモーションモディファイアーを使う手法、ゲームプレイアビリティプラグインを活用する手法などが紹介されています。また、ベクトル計算を使って目的地点を動的に更新する高度な手法も説明されています。各手法の長所と短所が示され、状況に応じた使い分けが提案されています。

Takeaways

  • 👣 ルートモーションでキャラクターを移動させる際、曲がってしまう問題への3つの解決策が紹介されている。
  • 🔑 1つ目は、ルートモーションのスケールを変更することで、簡単に問題を解決できる。
  • ⚙️ 2つ目は、AnimationMontage内のRootMotionModifierというプロパティを使って、ブループリント上でスケールを調整できる。
  • 🎮 3つ目は、GameplayAbilitiesプラグインを使って、AnimMontageの再生中にルートモーションのスケールを変更する方法。
  • 🧮 最後に、TargetLocationの計算を使って目的地を動的に変更する高度な解決策も紹介されている。
  • ⚖️ 各解決策には一長一短があり、状況に応じて使い分ける必要がある。
  • 🔄 ループ処理の際は、AnimMontageの終了時にタイマーを止める必要がある点が説明されている。
  • ✨ スケール変更以外にも、TargetLocationの計算を使えば目的地に沿った移動が可能になることが示されている。
  • 📐 ターゲットロケーションの計算方法と、アクターの現在位置からの相対的な計算方法が詳しく説明されている。
  • 🤖 紹介された解決策はいずれもUnreal Engineのブループリントビジュアルスクリプティングに基づいている。

Q & A

  • 今回の動画の主なトピックは何でしたか?

    -ルートモーションで移動量を変えるモーション・ワーピングを使った際の問題と、その解決策について説明していました。

  • ルートモーションのスケールを変更する一番簡単な方法は何でしたか?

    -ルートモーションのスケールを変更するには、プレイヤーキャラクターのルートコンポーネントのスケールを直接変更することが一番簡単な方法です。

  • ルートモーションのスケールを変更する別の方法にはどのようなものがありましたか?

    -「アドルートモーションモディファイアー」という関数を使うと、ブループリント上でルートモーション・ワーピングのスケールを調整できます。また、「ゲームプレイアビリティ」プラグインを使って、アニメーションモンタージュのウェイト値を変更することでもスケールを変えられます。

  • 「アドルートモーションモディファイアー」を使う利点は何でしょうか?

    -ブループリント上でルートモーション・ワーピングのスケールを直接調整できるため、より細かい制御が可能です。また、開始時間と終了時間を指定してスケールを変更できます。

  • 「ゲームプレイアビリティ」プラグインを使う際の注意点は何でしょうか?

    -このプラグインを使う場合、「ゲームプレイアビリティ」プラグインを有効にする必要があり、ゲームプレイアビリティを新規作成し、キャラクターにアビリティシステムコンポーネントを追加する必要があります。

  • 「アドワープデートワープターゲットフロムロケーション&ローテーション」を使ってルートモーションを制御する方法は何でしたか?

    -キャラクターの位置とゴール地点の距離を計算し、ゴール地点をプレイヤーの移動に合わせて更新することで、まっすぐ移動できるようにしていました。

  • 上記の方法で注意すべき点は何でしたか?

    -アニメーションの再生が終了した時に、ゴール地点の更新処理も終了するように制御する必要がありました。そうしないと、アニメーションが終了した後もゴール地点が更新され続けてしまいます。

  • 今回紹介された3つの方法の一長一短は何でしたか?

    -ルートコンポーネントのスケール変更は最もシンプルですが、細かい制御ができません。「アドルートモーションモディファイアー」は細かい制御ができる反面、やや複雑です。「アドワープデートワープターゲット」は動的にゴール地点を更新できますが、アニメーション終了時の制御が必要です。

  • 今回の説明の中で一番重要だと思われる点は何でしたか?

    -ルートモーションのスケールを変更することで、移動距離を調整できることが一番重要なポイントだと思われます。3つの方法はそのための異なるアプローチを示していました。

  • 最後にどのような総括がなされましたか?

    -3つの方法にはそれぞれ一長一短があるため、状況に応じて使い分けることが重要だと総括されていました。シンプルな調整が必要な場合はルートコンポーネントのスケール変更が適し、より細かい制御が必要な場合は他の2つの方法を使うとよいでしょう。

Outlines

00:00

🎥 ルートモーションのスケール調整とワーピング手法の解説

この段落では、キャラクターのルートモーションで移動量を変えるモーション ワーピング手法について説明しています。最も簡単な方法として、ルートモーションのスケールを調整する方法を紹介しています。さらに、アドルートモーションモディファイアーを使って、ブループリント上でワーピングの濃度を調整する方法も解説しています。壁に沿ってまっすぐ移動させるための手順と、異なる手法のメリット・デメリットも触れられています。

05:01

🧪 ゲームプレイアビリティを使ったモーションワーピング

この段落では、ゲームプレイアビリティプラグインを使ってモーションワーピングを行う手法を紹介しています。ゲームプレイアビリティを有効にし、アニムリートモーションのスケールを変更することで、キャラクターの移動量を調整できます。この手法では、時間的なタイミングやXYZ軸別の設定が可能になります。実際にこの手法を使ってキャラクターを移動させる様子も示されています。

10:04

⚡️ ゴール地点の動的更新によるルートモーションのコントロール

最後の段落では、以前紹介したアドワープデートワープターゲットのロケーションとローテーションを使った手法について触れています。ゴール地点を動的に更新することで、キャラクターをゴール地点に向かってまっすぐ進行させる方法を説明しています。ベクトル計算を用いてゴール地点のロケーションを更新し、キャラクターの向きも調整することでスムーズな移動を実現できます。アニメーション再生の終了時にタイマーを止める方法も記載されています。

Mindmap

Keywords

💡ルートモーション

ルートモーションとは、キャラクターの動作全体の移動や回転を指す概念です。この動画では、ルートモーションの移動量を調整する方法について説明されており、関連する技術的手法が紹介されています。例えば「ルートモーションに関してはぐっ通知の部分は決してありますもう」という箇所で、ルートモーションの調整に関する記述があります。

💡モーションワーピング

モーションワーピングとは、アニメーションの変形や補間を行う技術のことです。この動画では、移動量を変えるためにモーションワーピングを使う方法が説明されています。「今日は肘に、紹介したルートモーションで移動量を、変えるモーション warping を、使った時にこんな感じでちょっと曲がって」という部分が、モーションワーピングの概念に言及しています。

💡スケーリング

スケーリングとは、拡大縮小の操作を指します。この動画では、ルートモーションのスケール値を変更することで移動量を調整する方法が提案されています。「スケールアップになっているのをスケールにするってがは一番簡単な方法になるかと思います」という文では、スケーリングによる調整が最も簡単な方法として言及されています。

💡ブループリント

ブループリントとは、Unreal Engineにおけるビジュアルスクリプティングシステムのことです。この動画では、ブループリント上でルートモーションのスケーリングを行う方法が説明されています。「これはぐっ通知上でせいかすることはできるんですこれは、鵬翔はピグのコンポーネントをとってきて」という部分で、ブループリントを使った調整方法が言及されています。

💡アニメーションモンタージュ

アニメーションモンタージュとは、複数のアニメーションを組み合わせて再生するための仕組みのことです。この動画では、アニメーションモンタージュを使ってルートモーションのスケーリングを行う方法が紹介されています。「アニメーションモンタージュを再生するアビリティを実行するという形になります」という文でその概念が説明されています。

💡ゲームプレイアビリティ

ゲームプレイアビリティとは、Unreal Engineで提供されているゲームプレイの機能を拡張するためのプラグインのことです。この動画では、ゲームプレイアビリティを使ってルートモーションのスケーリングを行う代替手段が示されています。「ゲームプレイアビリティーというプラグインを使うのでこのプラグインの聞けばプレイヤーベルチーズを有効にしましょう」という部分でその概念が登場します。

💡ロケーション

ロケーションとは、空間上の位置を表す概念です。この動画では、ゴール地点のロケーションを更新することで、ルートモーションをまっすぐに進めさせる方法が説明されています。「ターゲットロケーションなんですけどターゲットロケーションはまずアクターの一今のアクターの位置と」という箇所で、ロケーションの概念が登場しています。

💡ベクトル

ベクトルとは、大きさと向きを持つ数学的な量のことです。この動画では、キャラクターの移動方向や距離をベクトル計算で表現する方法が紹介されています。「あのさのベクトルの長さを取りますつまり今どのくらい動いたか合計でどのくらい動いたかっていうのを算出するわけですね」という部分で、ベクトルの概念が登場しています。

💡タイマー

タイマーとは、一定の時間間隔で処理を実行するための仕組みのことです。この動画では、タイマーを使ってゴール地点の更新処理を定期的に実行する方法が示されています。「ペットタイマー倍イベントで定期的にこのアップデートロケーションを読んであげるばここでも読んでいる様子です」という部分で、タイマーの利用が言及されています。

💡イベント

イベントとは、プログラミングにおいてある条件が満たされた際に発生する出来事のことです。この動画では、様々なイベントを使ってルートモーションの制御を行う方法が説明されています。例えば「デモンた地を再生シティでもん登場再生しつつペットタイマー倍イベントで定期的にこのアップデートロケーションを読んであげる」という部分で、イベントの概念が登場しています。

Highlights

ルートモーションのスケールを変更することで、キャラクターの移動量を調整する方法を紹介する。

スケールを変更する最も簡単な方法は、ルートモーションの再生時にスケール値を直接指定することである。

直接スケール値を指定する方法の欠点は、実際の移動距離を制御しづらいことである。

「AddRootMotionModifier」関数を使うと、ブループリント上でモーション倍率を調整できる。

ゲームプレイアビリティプラグインの「PlayMontageAndWaitForAnimationEnd」ノードを使うと、アニメーションのスケール値を変更できる。

3つの方法を紹介し、ルートモーションにスケール値をかけて再生するという共通点を指摘する。

「UpdateDesiredHomeLocation」関数を使って、キャラクターの移動に合わせてゴール地点を動的に更新する方法を説明する。

ゴール地点の更新には、キャラクターの現在位置と目標距離から次のゴール地点を計算する。

ゴール地点の更新をループさせることで、キャラクターの進行に合わせてゴール地点が動的に変化する。

アニメーションが終了したタイミングでループを止める処理が必要である。

ベクトル計算を使えば、「UpdateDesiredHomeLocation」関数の代わりに同様の効果を得られる。

様々な方法にはそれぞれ一長一短があり、状況に応じて使い分ける必要がある。

スケール値を直接指定する方法がシンプルで分かりやすい場合が多い。

紹介した方法を組み合わせて使うことで、より柔軟な制御が可能になる。

次回の動画でさらなる解説を期待している。

Transcripts

play00:00

さぁ今日はクレイミックです今日は肘に

play00:03

紹介したルートモーションで移動量を

play00:07

変えるモーション warping を

play00:09

使った時にこんな感じでちょっと曲がって

play00:12

しまうっていうのがあったのでこれの解決

play00:16

策を色々と聞いていこうと思いますそれで

play00:19

は福いきましょうまず一番簡単な方法とし

play00:24

play00:24

このルートバージョン森ファイアーの

play00:26

スケールアップになっているのを

play00:29

スケールにするってがは一番簡単な方法に

play00:33

なるかと思います牽制するとここに奇形

play00:37

ルチョ入力するんですけどプー系誘致を

play00:40

入力したムン時ルート猛暑が大きく動く

play00:44

ことになりますえスケルトンのルートを見

play00:46

てみるとこっちの方に動かすと前に進むの

play00:50

ではいいですねなのでもしを待っていくの

play00:54

バインダーたいこれを

play00:56

後とかにしてあげますびっくり消耗した

play00:59

方法とと特に移動するかっていう目的塩

play01:04

波動アップデートワープターゲット

play01:06

from location

play01:06

ローテーション言う関数を使って設定した

play01:10

んですけど今回は移動量をもこのつける

play01:14

だけで決めるのでこれは特に入らなくて

play01:17

ほんと味を再生するだけね貧困できます

play01:21

実際に見てみるとこちらは前回のやり方で

play01:24

これをと目的地にできるの鍵いこうとして

play01:27

しまうので

play01:28

ここからどちらロールした時にこうですね

play01:31

ちょっと見に今がてしまうということに

play01:34

なるんですけれども

play01:35

先ほどねーずだと

play01:37

でしょこれやると分かりましたがね

play01:40

マッスルんだと思いますもう1回見てみる

play01:43

とこうからどちらを弄した時に壁に当たっ

play01:47

た後まっすぐ進ん提供になったと思います

play01:50

これが一番簡単な解決方法かだと思うん

play01:54

ですけど少し使いにくい点がくださって

play01:57

の一つ目が透けるであるということですね

play02:01

前回はこんな感じで一応直接指定すること

play02:05

ができたので結構

play02:07

調整がしやすかったですけどこれだと

play02:09

受け入れてしか入れられないので a 実際

play02:13

にどのくらいパンメートルで飛ばしたいの

play02:16

かお米取る飛ばしたいのかという形で au

play02:19

さんのはちょっと難しくて

play02:21

あくまでも天上山てるアニメーションの

play02:24

受け入れ地になってしまうというところが

play02:26

少し使いづらい点かなというところとあと

play02:30

このやり方だと

play02:33

このフィメイション退治にスケールが事君

play02:37

家で入力してしまうので変更はして暗いと

play02:40

っていうところは

play02:41

ホンダになってきますただ後者に関しては

play02:44

解決する方法があってそれがこちらにあり

play02:48

ますこのアドルートモーション

play02:50

モディファイアース系という関数を使うと

play02:53

このローション warping の

play02:56

この通知の濃度これを blueprint

play03:00

上でせいかすることはできるんですこれは

play03:03

鵬翔はピグのコンポーネントをとってきて

play03:06

そこからアドルートモーションと入れると

play03:10

低下することができます闇に普及ワープの

play03:13

方もええかできますこれで始める時間と

play03:17

終わる時間とスケールを入力してあげる

play03:20

っていう感じですねなぜここに

play03:22

0.027秒から

play03:25

1.58秒と書かれているので0.02

play03:29

new んでよくから1.58伝を入力し

play03:32

てあげるとスケールちょっと違いがわかり

play03:35

やすいように ai にしておきましょう

play03:38

この後にマッサージを再生するだけです

play03:41

大丈夫これは追加するので

play03:45

こんな感じの子の低下の濃度はいらないん

play03:49

ですねなので日号で先制するルート

play03:52

モーションに関してはぐっ通知の部分は

play03:55

決してありますもうちょっと比較のために

play03:58

同じデート国旗していろいろなバージョン

play04:01

を作っているという感じですねこっちの

play04:04

プープリント地ねぇ数値を低下させる場合

play04:07

には大雪その後再生するもっと味は父は

play04:11

設定してなくて大丈夫

play04:13

いうことになりますみんなやってみると

play04:16

いっしょ

play04:19

here 思いますねこれもちゃんと8

play04:23

モーションの大きさの編今後がうまく使え

play04:26

ているということになります肝心の壁に

play04:30

沿っダートの移動を見てみると

play04:32

こんな感じでちゃんとまっすぐ移動します

play04:36

なのでこちらの ok ということになり

play04:39

ます

play04:40

なので本当にゲーム中を通して固定値で

play04:45

いい場合はボディたり入れてしまって

play04:48

例えばレベルアップとかスキルのレベルに

play04:52

応じてスケール家を買いたいというときに

play04:55

はこういう感じで blueprint 上

play04:58

でへ着くッターンッっていうのがいいのか

play05:00

あのーと思います次にんこのスケールに

play05:04

関しては実は猛暑マーキングを使わなくて

play05:08

play05:08

いったようなことがきっできるんです本

play05:11

ためにはゲームプレイハビリティ

play05:13

というプラグインを使うので二重のプラグ

play05:17

インの聞けばプレイヤーベルチーズを有効

play05:20

にしましょうそしたら右クリックのゲーム

play05:23

プレイのティムプレイヤーウィリティ

play05:25

プールペイントでゲームプレイアビリティ

play05:28

親に新規作成しますそして作ったゲーム

play05:32

プレイアビリティーを

play05:33

こんな感じでアクティベートビリティー

play05:35

からプレイモンタージュんどウェイトと

play05:39

いう

play05:39

濃度を使ってあげます

play05:41

本た子がなんか地等の理由で終了したため

play05:45

t 面白いですっていう感じです

play05:47

そして肝心なのはここに anim リート

play05:50

モーションとんそれーしょんのつけるって

play05:53

いうのがあってこれがブートモーションの

play05:56

スケール値を変更することができるんです

play05:58

ねここで入力しているのと同じような感じ

play06:02

になります

play06:04

ただはこちらと違ってこっちだと時間の脳

play06:09

タイミングからどのタイミングまで見てる

play06:11

の設定できたりとか xyz 別々に設定

play06:15

できたりするんですけどこっちは上の一切

play06:19

ないこれシンプルな形の設定になってい

play06:22

ますこれもさんバイトレにして

play06:25

やってみましょうあとはハードパターン

play06:28

キャラクターにアビリティシステム

play06:30

コンポーネントを静観して

play06:33

て人プレイでた米 t システムの初期艦

play06:37

フィットスタッドを行ってそのとリバー

play06:40

be a key generator 業

play06:41

の作ったアビリティを低下したいましたら

play06:44

pretty しセブのトライ

play06:46

activator verity by

play06:47

クラスという感性で先ほどの

play06:51

アニメーションモンタージュを再生する

play06:53

アビリティを実行するという形になります

play06:56

これで見ても

play06:57

ちょうどちょうど3倍くらいですかね動画

play07:00

できてここから壁に沿って動く時も

play07:04

ちゃんとまっすぐ

play07:06

ちょっとまっすぐもうた子が再生される

play07:09

ことはわかるかと思います

play07:11

という感じで3種類の方法を見てみたん

play07:14

ですけど

play07:15

共通しているのがルートモーションに

play07:17

スケール値をかけて再生するというのが

play07:21

全部一緒でしたねと言うのでまあ終わって

play07:25

もいいんですけど

play07:26

以前紹介したこのアドワープデートワープ

play07:30

ターゲット風呂ぶーローケーション&

play07:32

ローテーションを使ったやつだとできない

play07:36

のかというと一応

play07:39

できますということで今回はそんなやり方

play07:42

も説明してみたいと思いますこれが遺伝の

play07:45

境界車時の様子ですけどこんな感じで

play07:49

ゴール地点が動かないので

play07:52

ゴール地点に沿ってルートモーション

play07:54

動かすのでこんな感じでレジに向かって

play07:57

しまうのはちょっと問題になりそうという

play07:59

話をしましたねということはこのゴール

play08:03

地点が最初はまあここでいいんだけど

play08:06

かめからずった時にプレイヤーの勝目に

play08:10

このゴール地点が動いていけば解決するん

play08:14

じゃないかという風に考えたのでやってみ

play08:17

ましょうまず

play08:19

スタートロケーションという

play08:21

ベクター型の変数を追加しますそして

play08:24

ますの右も当社時とロケーションに

play08:28

ファクターの1を入れておきますこの後

play08:31

アップデートロケーションという

play08:33

作ったカスタムイベントを読んでこのカス

play08:37

と b ベッドでゴール地点の一応更新

play08:40

するという感じですねデモンた地を再生

play08:43

シティでもん登場再生しつつペット

play08:47

タイマー倍イベントで定期的にこの

play08:50

アップデートロケーションを読んであげる

play08:53

ばここでも読んでいる様子ですゴール地点

play08:55

を更新するイベントを読んであげるという

play08:59

形ねぇゴール地ておおおお

play09:01

敵更新してあげればいいんじゃないかと

play09:04

いう発想ね fendi スエジャー

play09:07

タップでとロケーションではどういう形で

play09:09

ゴール地点を更新しているのかというと

play09:13

ローテーションはそのまま来たの

play09:14

ローテーションでいいですね会見しない

play09:17

までターゲットロケーションなんですけど

play09:19

ターゲットロケーションはまず

play09:22

アクターの一今のアクターの位置と

play09:25

開始してんの

play09:26

たを取りますあのさのベクトルの長さを

play09:30

取りますつまり今どのくらい動いたか合計

play09:34

でどのくらい動いたかっていうのを警察

play09:37

するわけですねそれから全部で動きたい

play09:40

距離今回は1,200cm 12m おき

play09:44

たいとしますそれとこの系酒かはあとどれ

play09:49

くらい動くかなのであと動きたい距離に

play09:53

対してたくさんの前方向のベクトルをかけ

play09:55

てあげればその時もし壁とかがじゃあ何も

play09:59

なかったら前方向に後なぜ1説明は目標

play10:04

地点に到達しますよ

play10:06

ところが計算できるのであとはこれを

play10:09

アクターの位置と他者をせてあげて

play10:12

ワールド座標にしてあげるという形で

play10:15

オール1を欲しいしてあげますこうすると

play10:18

どちらを始めた後にこうやって

play10:21

キャラクターが動いていくと徐々にロール

play10:24

位置が変わっていくのがいいいるかなと

play10:27

思いますチェーンとゴール市がカールを

play10:29

見合わせてプレイヤーのローションも

play10:32

変わっていくので結果としてまっすぐ進む

play10:36

ようになるという感じですねこれ気に入っ

play10:39

たんですけどこれルーピングのままその

play10:42

ままなので本と味が再生し終わってもだと

play10:45

呼ばれてしまってるんですね裏もよろしく

play10:48

ないのでその return value

play10:50

に対してクリアー and in bali

play10:53

8タイマーバイハンドトゥを

play10:55

遺書コンプリーぷとか言っちゃうととか

play10:59

インターラピスととかに読んであげると

play11:02

このファンタジーが終わった時に行こうの

play11:05

set timer ばイベントの

play11:07

イベントも貯まるようになるのでこんな

play11:10

感じでのモーションが先制されてライナー

play11:13

はダイバーが有効になるけど

play11:15

再生され終わると終了するという形になり

play11:19

ますっていうわけでファンエクトル計算を

play11:22

使えば

play11:23

アドワープデートパーティーターゲット

play11:25

from location の

play11:26

ローテーションの場合でも一応それっぽく

play11:29

動かすことができるということがわかって

play11:32

いただけたかなと思いますあどちらの方向

play11:35

にも一長一短あると思うので本当に

play11:39

スケールに打っているだけでするような

play11:42

感じたものの場合は多分本体でにスケール

play11:46

を設定するのは一番シンプル可能と思い

play11:49

ますので作業時て使い分けてもらえたら

play11:53

いいのかなと思いますっていうわけで今回

play11:56

ます声でフォローかなと思いますまた次回

play12:00

この動画で会えると無理生ですそれじゃや

play12:04

なぁ

play12:06

[音楽]

Rate This

5.0 / 5 (0 votes)

Related Tags
ゲーム開発アニメーションキャラクタールートモーションプログラミングチュートリアルUnreal EngineBlueprintプラグインテクニカル
Do you need a summary in English?