自分はうまくいきましたが、もっといい方法あるかも…。あくまで独自の方法です。
RBURというシステムを使用した鉄道ワールドです。
RBUR(RigidBodyUdonRailway)は曙松線建設事務所 frou01様が作成している製品です。
© 2025 frou01. Released under the MIT license.
前回の記事からの続きになりますので、最初に①~⑤の記事をご覧ください。
今進んでいるところ
・FBX Exporterの導入
・必要アセットのimport
・レールの下準備
・線路の敷設
・車両を配置する。
・線路をつなぐ
今回進むところ
・ポイントを設定する
ポイントをつくる
ポイントについて
ポイントの設定は複雑になりがちです。
またanimationの設定も必要になるので、頑張ってください。
また、何度もになりますが、このポイントの設定も自己流ですので、ご注意ください。
ポイントの配置
Scene上にポイントを配置しましょう。
「Hierarchy」からCubeを作成し、名前を付けてください。今回は「pointswitch」に設定
このCubeがポイントを切り替えるスイッチになるので、ポイントから少し離れたところに設置してください。
このCubeは説明上「point」と命名しています。
配置したポイントを「point」に入れましょう。
配置についてですが、位置を合わせるのは手作業になります。ポイントを作りたい線路に合わせてポイントを手動で配置しましょう。
もしポイントに近づいたら映像が見切れちゃうよって人がいたらポイントを選択した状態でShift+Fを押すと近づけるようになります。
勾配があると設置が難しいので、平坦なところに設置するのがおすすめです。
微調整についてはマウスで調整するのではなく、Transformでちょっとずつ数字を調整するのがおすすめです。
↓配置例

「CinemachinePath」を設定
このRBURというシステムは ”線路” の上ではなく どちらかというと”CinemachinePath”の上を走っているという認識になります。
そのため、見かけ上ポイントを配置しても機能することはありません。このポイントの上に”CinemachinePath”を設定することで、初めてポイントとして動作します。
“CinemachinePath”は下の画像のようなイメージで設定します。

今回の解説では「rail3」「rail4」「rail5」と名前を設定して解説します。
もし大きなポイントを作りたい場合は少し複雑になりますので、頑張ってください。
↓複雑なポイントの例です。

↓さらに複雑な例

大きなポイントの設定にはそれなりに時間を要することになります。
「CinemachinePath」を設置しよう
CinemachinePathを配置する
分岐は「CinemachinePath」を使用したことしかないので、「CinemachinePath」で解説します
前回説明した要領で「CinemachinePath」を設置していきます。
注意点ですが、ポイント部分に関しては「Rail Model Tiler」を使用して線路を敷く必要はありません。車両はあくまで「CinemachinePath」の上を走ります。
車両は「CinemachinePath」の線を中央にして走ります。そのため、ポイント部に「PathDetails」を設定する際は、なるべく線路の中央に線を引いてください。
カーブしているところが難しいですが頑張ってください。
下の図のように「CinemachinePath」を設定していくイメージになります。

特に注意するべきこと
「CinemachinePath」を設置してく際に特に注意する必要があるのが、「PathDetails」の起点と終点の位置になります。起点は「⓪」、終点は「①・②・③・・・・」になります。
今回だと下の図のように起点と終点を設定してください。
※終点「1」の1は最後の数字(最も大きい数字)です。

また「PathDetails」の「Tangent」がX:0、Y:0、Z、0だと脱線しますので、「Tangent」も進行方向に向かって伸ばしてください。(「1」とかでも大丈夫です。)
Tangentについて図で表すとこのようになります。(青線)

「Tangent」は起点から終点に向かって伸びているのが正しいです。
重なり
ポイントには分岐の始まりで重なっているところがあります。(rail3、rail4、rail5が重なっているところ)
この重なっている場所がずれると脱線する原因になるので、なるべくぴったり合わせましょう。
重なる場所については細かく指定はないですが、図の説明の中で重なっているところらへんがちょうどいいと思います。
うまく引けたでしょうか?下の図のようになっていればOKです。

「Next」「Prev」の設定
「rail」の「Next」「Prev」を設定しましょう。
今回の設定は下記の通りになります。
rail3の設定 「Next」 “rail4″ 「Prev」なし
※ポイントの手前に線路がある場合はそれを指定”rail2″等
rail4の設定「Next」”なし” 「Prev」”rail3″
rail5の設定「Next」”なし”「Prev」”rail3″
仮にポイント前後に線路を敷設した場合はこのようになります。
下の図の場合

rail2・・・・Next rail3 、Prev なし
rail3・・・・Next rail4 、Prev rail2
rail4・・・・Next rail6 、Prev rail3
rail5・・・・Next rail7 、Prev rail3
rail6・・・・Next なし、 Prev rail4
rail7・・・・Next なし、 Prev rail5
といった設定になります。
rail3のNextは直進のrail4を設定しておけば大丈夫です。
ポイントの設定
ポイントを設定する
設置したポイントは「point」の階層に入れてあると思います。
まだ入れてない方は(Cube)を作成し、その階層に入れてください。
まず、「point」を選択し、「Add Component」からPoint_Scriptを追加します。
Point_Scriptを上から順番に設定していきます。
Shinro Name 1 任意 (直進時の進路名)
Shinro Name 2 任意 (切替後の進路名)
Change Type チェックを入れる
Change Type_sub チェック無し
Point Prev Rail 「rail3」 前の線路を指定
Point Prev Rail _sub なし
Point Next Rail1 「rail4」 次の線路を指定
Point Next Rail2 「rail5」 切替後の線路を指定
Dsiplay なし TMPを指定することで、進路名が動的に表示される
Displayは設定方法を把握できてないので一旦スルー。設定方法わかったらあとで追記します。
Machine Animator にはアニメーターを設定します。次の項目で説明します。
State チェックを入れる。
動作を確認する
「rail」の接続付近に青い丸、赤い丸が残っている人は「Next]「Prev」の設定がうまくいってない可能性が高いです。
もう一度見直してみてください。

ポイントが正しく動作するかの確認を行います。
UnityのPlay Mode(再生モード)を押して「point」を押してみてください。
車両を動かして、ポイントが切り替わっているかを確認してください。
現状では、animationの設定をしていないため、動作しているかどうかがわかりにくいので、
確認できそうになかったら次のanimationの設定に進んでもらって大丈夫です。
※Displayの設定がうまくできたら、この時点でも確認できると思われます。設定方法わかったら追記します。
Animationを設定する
Animator Controllerを作成する
製品によってはanimationがない場合もあるかもしれませんが、今回はある前提で進めます。
「Project」からポイントが入っていたフォルダを選択し、animationと書いてあるフォルダを探してください。

「animation」だけでは動作しませんので、「Animator Controller」を作る必要があります。
「animation」は動作そのもので、「Animator Controller」は動作の条件をコントロールするものです。
「Project」内のどこのフォルダでもいいですが、今回は「animation」が入っていたフォルダと同じフォルダに「Animator Controller」を作成します。
フォルダ内で右クリック、「Create」から「Animator Controller」を押してください。
名前を付けますが、わかりやすい名前にする必要があります。この製品では4種類のポイントが同梱されており、直進時のanimationと切替後のanimationがそれぞれに設定されています。つまり、4種類×2方向ということで8つのanimationがある状態になります。
自分が設置したポイントに応じて、必要なanimationを設定する必要があるので、自分が配置したポイントを一度確認し、名称に合わせて名前を決めておくと後々困りません。
今回自分が配置したポイントはL_1となっていたので、「L1」という名前にしています。
Animator Controllerを設定する
作成した「Animator Controller」をダブルクリックするとAnimatorの設定画面がでます。

ここに必要なanimationをドラッグ&ドロップしてください。
今回はポイントが「L1」だったので、L1と書かれているanimationを2つ配置します。
「L1」の末尾が「N」になっているものと、末尾が「R」になっているものを導入します。

Entryからオレンジ色の線が伸びていると思います。
このオレンジ色の線が「末尾N」の方に伸びるように設定します。
もし「末尾R」の方に伸びている場合は、「末尾N」の上で右クリック
Set as Layer default stateを押します。
遷移を設定する
左上の項目からparametersを選択します。
次に「+」ボタンを押します。

「+」を押すと色々出てくるので、「Bool」を選択します。
名前は「state」にしてください。
次に「末尾N」を押して、右クリック「Make Transition」を選択します。
線が引けると思うので、「末尾R」の方に線を引いてください。
同様に、「末尾R」の方から「末尾N」の方に線を引いてください。

こんな感じになっていたらOKです。
次に、「末尾R」から「末尾N」に引いた線をクリックしてください。
右側にconditionsという項目があると思います。
そこのList is Emptyの右下の「+」を押してください。
先程作った「state」が自動的に選択されると思います。
またその右側で「true」と「false」が選択できるようになっていると思います。
この項目の設定を
「末尾N」から「末尾R」はfalse
「末尾R」から「末尾N」はtrue
という風に変更してください。

これでAnimator Controllerの完成です。
動作の確認
動作を確認する
Animatorウィンドウから上のタブでSceneウィンドウに戻ってください。
設置したポイントを選択し、「Add Component」から「Animator」を選択してください。
※「Add Component」から「Animator」を追加。「Animation」ではありません。
「Animator」の「Controller」にAnimator Controller「L1」を割り当ててください。
「pointswitch」を選択し「Point_Script」の「Machine Animator」にポイントを割り当ててください。
UnityのPlay Mode(再生モード)を押して「pointswtich」を押してみてください。
ポイントが「pointswitch」を押すごとに動作したら完成です。
アニメーションが動かない場合
まず「state」のスペルミスがないか確認してください。
Transitionの向きや「true」「false」の設定があっているかを確認してください。
UnityのPlay Mode(再生モード)中にEscを押してメニュー的な画面が出ているときに、上のタブからAnimatorを見ることができます。
Animatorを開いた状態で、「Hierarchy」からポイントを選択すると遷移の状況を確認することができます。
「point switch」を押したときにanimationの遷移が行われているか確認してください。
遷移が行われている場合、「animation(L1 L2 R2など)」の選択を間違えている可能性があります。
コメント