はじめに
このチュートリアルでは、以下の作成方法を学びます
1.基本的な鉄道
2.列車
3.貨物を積んだ列車
4.分岐Y字路、信号機とそのセンサー
5.Y字路とセンサーの接合
作成
1.基本的な鉄道を作る
まず、テンプレートから新しいプレースを作成する
Robloxにログインし、以下のURLからモデルを入手してください
モダンな列車の線路 – Creator Marketplace (roblox.com)
「表示」から「ツールボックス」を開く。 インベントリーを開くと、線路がインベントリーに追加されている。
アイコンをクリックすると、ワークスペースの下にすべてのモデルが挿入されます。
“LongerLongTrack”と”LongestLongTrack”を削除する。 私たちのゲームではこの2つの線路は使わない。
これから自分たちの鉄道を作る。 複製を使うことで同じタイプの線路を簡単に手に入れることができる。
地面と線路の間に隙間がないように、しっかりと位置を合わせる。
※トラック同士をつなげるときは、うまくつないでください! (線路が実生活で正確に接続されていないことを想像してみてほしい……)
線路を接続する手順:
1.必要に応じてピボットポイントを編集する
2.ピボット編集のチェックを外し、線路を連結したい線路に移動します
3.ステップ2を繰り返して鉄道を完成させる。
4.Y字路を追加することもできます。 その際、「衝突」のチェックが外れていることを確認してください。
5.分岐路である2つの線路を選択し、1つのフォルダにまとめる。 フォルダ名を “SplitY” とする。 合流路も同じようにして、名前を “JoinY”とする。
6.Y字路の名前をそれぞれ変えます。 左を “L”、右を “R”と名付けます。
7.分岐路の前に1つの検出器(プレイヤーの方向入力を検出するため)と、合流路にそれぞれ2つの検出器(列車の方向を検出するため)が必要です。
分岐検出器:
合流探知機 2つ:
8.また、それぞれの分岐/合流の動作を制御するためのスクリプトも必要です。
workspace.JoinY.JoinYControl
プログラムの説明:
- 1-4行目:左右の検出器と左右の線路モデルの内部のパーツを参照する。
- 6、20行目:左右の検出器のタッチイベントを定義する。
- 7、21行目:プレイヤーのVehicleSeat以外が検出器に当たったなら無視する。
- 12~17行目、26~31行目:左の検出器がプレーヤーのVehicleSeatに触れた場合、左側の線路の衝突を有効にし、右側の線路の衝突を無効にする。 右の検出器の場合は逆。
workspace.SplitY.SplitYControl
プログラムの説明:
- 1~6行目:ゲーム中のパーツを参照する。 (とりあえず、5,6,22,23,31,32行目は無視)。
- 8行目:検出器のタッチイベントを定義する。
- 9行目:プレーヤーのVehicleSeat以外に検出器に当たったものを無視する。
- 13行目:ユーザーの入力から進行方向を取得する。 今のところVechicleSeatを作成していないため、エラーが予想されます。
- 15~30行目:プレーヤーの入力方向が右の場合、左側の線路を無効にし、右側の線路を有効にする。 プレーヤーの入力方向が左の場合、右側の線路を無効にし、左側の線路を有効にする。
2.列車を作る
列車を作り始める前に、列車が入るのに十分な長さのまっすぐな線路があることを確認しよう。
エクスプローラーでトラックを整理しよう:
さあ、列車を作り始めよう。 列車の基本構造を見てみよう。
カーゴ(Cargo)とは、自力では動かない鉄道車両のこと。 機関車(Locomotive)とは、自分で、あるいはプレイヤーの操作によって動く列車のこと。
機関車の構造を詳しく見てみよう:
機関車の最も重要な部分はモーターだ。 そのうちのひとつを詳しく見てみよう。
まずはモーターを作るところから始めます:
警告:チュートリアルのとおりに忠実に従うこと。 ちょっとした行動の違いが、まったく違う結果を引き起こすかもしれない。
1.外側の「Wheel」(小さい円)を作る。
2.内側の「BWheel」(より大きな円)を作り、それらを溶接する。
3.車輪をつなぐモーター用のボディパーツを作成する。
4.BWheelにアタッチメントを作成する。
5.ボディ部分にアタッチメントを作成する。
6.ボディのアタッチメントを反対方向に回転させる。
7.ボディのアタッチメントの位置を変える。 “BWheel”のアタッチメントのWorldCFrameのY,Zの位置(Xは含まない)をコピーして、”Body”のアタッチメントのWorldCFrameの位置に貼り付ける。
図のように2つのアタッチメントが並んでいるはずだ。 Bwheelのアタッチメントを “Attachment0“に、Bodyのアタッチメントを “Attachment1“に名前を付けなおす。
8.BWheelの下にHingeConstraintを作成し、2つのアタッチメントを動画に示されている順序でリンクさせる。
9.”BWheel”と “Wheel”を複製し、車体の反対側に合うように位置を変え、回転させる。
10.ステップ5~7とほぼ同じように、Bodyパーツにもう1つアタッチメントを作成し、位置を変えて回転させ、対応するHingeConstraintを編集して2つのアタッチメントをリンクさせます。
11.以下を複製し、注意深く再配置する。
- 2つの”BWheel”
- 2つの”Wheel”
- “Body”のアタッチメント(ボディそのものではない)
12.ボディのサイズを再調整する。
13.モーターを試す。 テストするには、”Hinge”で検索して、現在あるすべてのHingeを見つけ、以下のように編集する。
14.問題が一つある。それは、「車輪」の側面が浅すぎて、列車のモーターが線路から外れてしまうことがある。
この問題の解決策は、各ホイールの幅が広くなるようにホイールを編集することだ。
15.最後のビデオを見てわかるように、モーターはコースにとどまることができたが、曲がり始めると、少し不安定になった。
モーターがよりスムーズに回るように、モーターを短くしよう。
16.パーツをモデルとしてまとめる。
次に、モーターに直接接続する機関車のベース部分を作ります。
1.モーターのボディ部分を複製して、新しいベース部分を作成します。
ベース部分のアタッチメントを削除する。
2.モーターのボディとベースの両方にアタッチメントを作成する。
3.”Body”のCFrameのX座標を、ステップ2で新しく作成したアタッチメントの両方にコピーします。
4.そして、”Body”のCFrameのZ座標もコピーする。
5.ベースのアタッチメントを回転させる。 アタッチメントの名前を変更する。 “Base” と “Body” の間に新しい HingeConstraint を作成します。
6.以下を注意深く選択し、複製する。 希望の位置に移動させる。
- “Motor”
- “Base”の下の “Attachment1”
- “Base”の下にある “HingeConstraint”
7.”Base”を”Motor”にくっつけて、すべてが機能するかテストする。
これから列車を制御していきます:
1.これまでに作成したパーツを1つのフォルダに整理し、”Train”と名付ける。 その後、パーツを組み合わせて “Locomotive”と名付けたモデルを作る。
2.「VehicleSeat」と「script」を “Locomotive”の下に作成する。
3.”Wheels”の”HingeConstraint”の名前を、右と左で統一する。
4.”ReplicatedStorage”の下に “TrainValues”という名前のフォルダを作成し、”MAX_WHEEL_VELOCITY”という名前の「IntValue」を作成します。
5.”Locomotive”スクリプトの中に次のように入力する。
6. 下記URLより「Light」をダウンロードしてください。
https://www.roblox.com/library/14911674280/Light
7.Toolbox -> Inventory -> My Model からダウンロードした Light を挿入します。
8.”Light”を”SplitY”フォルダに移動する。
次のコントロールであなたの列車をテストしてください:
- Wキーでの前進
- Aキー、Dキーでの進行方向の決定
見た目を良くするコントロールルームのURL