重力を0から組む-違う惑星に行きたい-

※素人による記事の為、間違いがある可能性があります
※個人用備忘録ですが、何かご指摘ございましたらコメント頂けたらと思います


下記記事の続きです、他の惑星に行くときのやり方を説明します。


参考元


Fly インプットを作成

飛ぶ用のインプットが欲しいので作ります。
・インプットアクションを新規作成
・IA_Flyにリネーム


IMC_Default(Input Maping context)に設定します。

好きなキーで大丈夫です


AnimMontage を作成

飛んでる時にして欲しいアニメーションアセットを用意して下さい

そのアニメーションアセットの AnimMontage を作成

アセットを選択 > 右クリック


飛ぶのをやめた時用の AnimMontage が欲しいので
着地アニメーションの MM_Land の AnimMontage も作成


惑星ブループリントを作成

コンテンツブラウザ右クリック


BP_planetにリネーム


Sphereを追加
マテリアルを設定
DefaultSceneRootと置き換える(念のため)


スフィアコリジョンも追加
SphereColisionとかに適当にリネーム
半径を適当にでかくしておく


元あった惑星と置き換え
もう一つ適当に配置

BP_planet2は気にしないで



プレイヤーBPを整理

CUM_PlanetWalkerを開く

まず、ノードを整理しましょう。
赤枠の「引力&垂直に立つ」部分のノードをまとめて
StandingPlanet とリネーム

ノードを折りたたむ


後半の「進行方向に向く」部分も折り畳んで
Rotate Yaw にリネーム


プレイヤーを飛行させる

変数を作成
Flyingにリネーム、Bool値に設定

画像の様に組みます
Flyインプットを押したら、Flyingをオン、モンタージュを再生
離したら、Flyingをオフ、モンタージュを停止
A 飛ぶ用のAnimMontageを指定
B 着地用のAnimMontageを指定

※このアニメーションの実装は暫定的なものです


更に画像のように組みます
Flyingがオンなら、前に飛ぶ、進行方向を向く
Flyingがオフなら、惑星の引力発生


惑星の位置情報をプレイヤーに渡す

惑星立の中心位置をプレイヤーに渡して、他の惑星の重力下で歩けるようにしたいです。

別のアクターとの情報のやり取りが必要になります。
それについては下記リンクにまとめています(書きかけだけど)


今回はブループリントインターフェースを使います。
コンテンツブラウザで右クリック
ブループリントインターフェースを作成


BPI_PlanetGravityにリネーム


BPI_PlanetGravityを開き
関数名をSetWorldOriginに
Inputを新規作成
WorldOriginにリネーム、Vectorに変更


BP_planetを開く
コリジョンに入った時のイベント作成


画像の様に組む


CUM_PlanetWalkerを開く
ClassSetting > Interfaces > ADD > BPI_PlanetGravityを指定


画像の様に組む


完成です!!他の惑星に旅立ってください!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

この記事が気に入ったらサポートをしてみませんか?