UE4でグラインドの作り方
スケボーとかで手すりやレールの上を滑るやつですね。
これは、スプラインコンポーネントを使いました。
キャラクターの移動
キャラクターの位置をスプライン上の始点からの距離で移動させます。
Tickが呼ばれたら、現在の位置に速度を足していけば、移動できるでしょう。
速度が傾きによって加減するのはスプライン上の現在の位置での傾きに重力をかけることで作れます。
傾きには、RotatorからForwardを作り、そのベクトルからzを使います。
レールに乗る
スプラインに当たったら絶対に始点から移動を始めるのなら簡単なのですが、
それだとどこに乗っかっても始点に移動してしまうので、不自然です。
2023/07/07更新(キャラクターに近い位置の、スプライン上の距離を取得する方法)
キャラクターに近い位置の、スプライン上の距離を取得する関数がスプラインコンポーネントにあればいいのですが、見つかりませんので
別の方法を使います

スプラインコンポーネントのFindInputKeyClosestToWorldLocationを使えば、キャラクターに一番近い位置に関係する値を取得できます
その値からスプライン上の距離を取得して
位置や回転を取得して移動させれば、レールに乗れるというわけですな
初めまして。レールの上を走る電車を作りたく色々と調べていたら、こちらの記事にたどりつきました。
私は、サードパーソンキャラクターで歩いていき、電車に乗り込んで、乗り込んだ後は運転席からのカメラに変更し、レール上を自分で動かすことができるものを作りたいです。
まだUe4を始めたばかりで、プログラミングの経験も全くありません。
こちらのプロジェクトを参考にさせていただきたいので、購入させていただくことは可能でしょうか?
どうぞ宜しくお願い致します。
はじめまして。
プロジェクトを探してみたのですが、どこにやったのか見失ってしまいました。
なので、申し訳ありませんが配布するのはできません。
マーケットプレイスで「train」で検索してみるのもいいかもしれません。
レール上を動くように操作したいなら、
スプラインの位置が GetLocation at Distance Along Spline で,
向きが GetRotation at Distance Along Spline で取得できるので、
Distanceを変数にして、足し算しながらこの機能を使えば、電車の位置と向きを計算できますよ。
(進みたいときに Distanceに進みたい分だけ足し算する感じです。)
回答いただき有り難うございます。
そうですか、プロジェクトを購入させていただくことはできないとのけと、残念です。
レールの上を動くようにするには教えていただいたノードをどのように組むのでしょうか?
勉強不足で、組み方が想像できていない状態です。
単純に書きましたが、こんな感じです。

返信いただきまして有難うございます。
実際にやってみたのですが、わからないところがあり質問させていただけますでしょうか?
すみません、何分私はUE4を始めたばかりということもあり、かなり初歩的な質問になってしまうことをお許しください。
Event BeginePlayの方ですが、
①Get Component by classノードのTagrgetに接続しているSpineActorですが、レベルに配置しているSplineaActorをゲットするということで大丈夫でしょうか?
このSpline Actorですが、ブループリントのActor型にSplineコンポーネントを追加しているもので大丈夫でしょうか?
②Set SPlineノードですが、変数でSplineを作成するということで大丈夫でしょうか?
その場合の変数の型はSpline Componentで大丈夫でしょうか?
③使い方についてですが、プレイするとレベルに配置しているActor型でSplineコンポーネントを追加しているブループリントのスプラインを取得してくれるということでしょうか?
どうぞよろしくお願い致します。
こんにちは。
そうです!全部合っていますよ。
返信いただきまして有り難うございます。
合っていたようで良かったです。
すみません、プレイをしてもサードパーソンキャラクターがレベルに配置しているBPスプラインに触れても、スプラインに沿って移動することができません。
何か足りないのでしょうか?
いくつか確認させて下さい。
①先日教えていただいたイベントビギンプレイとティックノードの処理はレベルブループリントにつくるということで大丈夫でしょうか?
②スプラインコンポーネントを追加しているアクター型のブループリントですが、スプラインコンポーネントの子供にスタティックメッシュを追加して問題ないということで大丈夫でしょうか?
レベルブループリントでもいいですし、電車アクターのブループリントに作ってもいいです。
はい、問題ありません。
度々すみません。
SetActorLocationAndRotationノードとセットDistanceの間にCast to ThirdPersoncharacterを配置して、SetActorLocationAndRotationのターゲットにつないだところスプラインを移動しました。
しかしながら、問題点がいくつかあります。
①プレイをした瞬間にスプラインの位置にすぐに行ってしまう。
自分で歩いていき電車に乗って初めてスプラインを移動したいのですが‥
②スプライン上を移動中は、止まったり、スピードをあげたりなどのコントロールが何もできない。
電車に乗った後は自分でスプライン上の線路を移動できるようにしたいのですが‥
こちらの記事の動画では、レールに乗ったあとは、自分で操作できるようにされていましたでしょうか?
この前教えたのは スプライン上を移動させる処理についてなので、プレイした瞬間に始まるようになっています。
コリジョンの機能とブランチノードを使って、コリジョンに触ったら足し算を始めるようにすればいいと思います。
足し算する部分で 100ってなっているところがありますね。
ここが0になれば止まりますし、1000になれば速くなります。
この記事の動画はもっと複雑で、
操作はできませんが、レールに乗る前の速度を使って物理計算をしています。
回答いただき有り難うございます。
たくさんの内容の為、まだきちんと内容見れていません、すみません。
あの後、自分なりに色々と考えてやってみました。
とりあえず報告させていただきます。
イベントTickをインプットAxis MoveForwardに変更してみました。
これで自分での操作(前後)はできました。
100の値のところですが、とりあえず変数化(Speed)にし、インスタンス編集化にしました。
しかしながらレベルでこの変数化したSpeedが確認できませんでした。
速度を調整できかと思いましたが違っていたようです。
いただいた回答の
足し算する部分で 100ってなっているところがありますね。
ここが0になれば止まりますし、1000になれば速くなります
これができれば自由に速度が変えられそうですが、どうすればできるか考えてみたいと思います。
カテゴリ
タグ