最終課題の実装について質問させてください。
空中ジャンプの実装を行っていまして、イメージとしてはアイアンマンのジェットスーツのような、
ふわっと浮くようなジャンプを実現したいのですが思うようにいきません。(JumpMaxCount増やす多段ジャンプだとぎこちなくてやめました
現在やろうとしていたのは、CharacterMovementに対してZ軸にだけAddForceをかけてみるというもの。
しかし、キャラは全く反応無しです。。力を加える数字を大きくしても、変わらずでした。
CharacterMovementに対してAddForceしても自身に力を加えて浮かすことはできないのでしょうか?
また、他に良いやり方がありましたらご教示お願いいたします。
CharacterMovementコンポーネントの「Jump Z Velocity」「Gravity Scale」の値を動的変更することでやりたいことができるかと思います。
・Jump Z Velocity → ジャンプしたときのZ軸方向の速度
・Gravity Scale ⇒ 重力加速度の値(ただし値はスケール値なのでデフォルトが1)
このMovementコンポーネントにはデフォルトでいろいろな機能がすでにあったりします
(Fly時の値など)
後はこれをゲームに合わせて設定するかこれを継承してゲーム専用のMovementコンポーネントを作ることでいろいろやりたいことを実装していきます
Gravity Scale
を軽くしてみたりして、たしかにふわっと軽くはなったのですが、やりたいこと少し違いました。。
さらに具体例(Unityで制作してるもの)を提示させて頂くと、重力を考慮した多段ジャンプを実装したいのです。
上昇する時のみジャンプ加速度を足し、下降するタイミングでジャンプすると加速度が減衰するようなところにゲーム性を見出していたので。。
ただ、UE4でやろうとすると空中ジャンプするにしても、JumpMaxCountを増やせばどうしても重力を無視してしまうようで
そもそもCharacterMovementに対してZ軸にだけAddForceをかけても意味は無いのでしょうか?
AddForceはSimulatePhysicsが有効になっているものでないと動作しません。
使いたいのであればキャラのコリジョンのSimulatePhysicsを有効にする必要があります。
直接Velocityを触るやり方があったんですね!
いろいろ試行錯誤してみて、下降時に基準となる加速度を引くというやり方をやってみたら目的の動作になりました。
おかげさまで達成感でいっぱいです、ありがとうございます。