RealTrainMod(RTM)において、頻繁に質問されるアドオンの機能実装方法について、目的別に解説します。
JSONまたは描画スクリプトで動作を設定します。
一体として動かすドアをそれぞれ独立したオブジェクトとしてモデリングし、そのオブジェクトに対して動作を設定してください。
一般的な二枚引き戸を持つ電車では、左前、左後、右前、右後の四つに区分することが多いです。
車両底面の高さの座標が負の値になるようにモデルを制作します。
線路天面が-1mとなるため、それを考慮して設計してください。
JSONでカスタムボタンを定義し、その値を描画スクリプトから取得します。
取得した値を元に条件分岐を行い、描画処理を実装します。
特殊発光は、車両の車内部分を前照灯として実装し、点灯させることで夜間やトンネル内で車内部分のみを発光させるテクニックです。
デフォルト機能のみで実装する方法と、描画スクリプトを使用する方法があります。
ただし、先頭車両の前照灯・尾灯が進行方向に関係なく常時点灯するため、そのままではライトが本来の動作をしなくなります。
そのため、以下の2つの車両モデルを別々に実装し、進行方向に応じて適切に設置・撤去を行うことで対応します。
描画スクリプトを使用する場合は、進行方向を検知し、それに応じて前照灯・尾灯の発光部分の描画を切り替えることで、単一の車両モデルで対応可能です。
以下は、冬嶺氏による解説ツイートです。
特殊発光については発案者であるmeitetsu600Vさんにお聞きした方が確実だと思いますが、一応説明をしてみます。
— 冬嶺 (@fuyuzero) 2021年6月26日
特殊発光はRTMの前照灯機能を使って内装を発光させるテクニックですが、前提としてRTM内でのライトの挙動を図解します。→#odaibako_fuyuzero https://t.co/AjE88tGLAw pic.twitter.com/MZq2KsnIKi
方向幕のテクスチャを制作し、JSONで実装します。
方向幕を通常のオブジェクトとして描画し、描画スクリプトで現在時間を取得します。
取得した時間を元に条件分岐を行い、描画する行先や種別を切り替えます。
SoundLibは、音声ファイル(.ogg
)やその再生条件を定義したスクリプト(.js
)を含むzip形式の配布物です。
JSONで指定されたファイルがアドオンに含まれるかどうかを区別しないため、他のアドオンに含まれるファイルを自由に参照できます。
これを利用して、外部から音声ファイルを読み込み、リアルな音声を簡単に実装できます。
include
文を使用して外部スクリプトを読み込みます。ただし、読み込むスクリプトの内容がインライン展開されるため、名前衝突に注意してください。
また、RTMで使用可能なvar
宣言は同じ変数を複数回宣言してもエラーにならないため、この点にも注意が必要です。
RTMのスクリプトにはモジュールバンドラーがないため、依存関係を解決するにはコードを手動でコピーアンドペーストしてください。
最高速度と加速度はJSONで設定できます。
減速度はKaizPatchを使用している場合にのみJSONで設定可能です。
3DCG制作ソフトの「インポート」や「マージ」機能を使用して追加パーツを読み込みます。
Metasequoia4の場合は「ファイル」 -> 「オブジェクトの挿入」を使用します。
追加のテクスチャが必要な場合は、マッピングの変更や材質の追加を行ってください。
JSONでseatPos
やslotPos
(RTM1)、seatPosF
(RTM2)を使用して設定します。
seatPos
はMinecraftのブロックの1px単位、slotPos
やseatPosF
はメートル単位で指定します。
描画スクリプトを指定すると、JSONでの処理は無視されるため、基本的に併用はできません。
パンタグラフの集電舟、並びにすり板の架線との接触面の高さが、+4.10mになる[1]ようにモデルを制作します。
hi03著「W51 規格 説明書」 ↩︎