逆引きリファレンス
This content is not available in your language yet.
このページでは、RealTrainMod(RTM)のアドオン制作にて、需要の多い機能の実装方法について説明します。
JSONまたは描画スクリプトで動作を設定します。
一体として動かすドアをそれぞれ独立したオブジェクトとしてモデリングし、そのオブジェクトに対して動作を設定します。
一般的な二枚引き戸を持つ電車では、オブジェクトを左前、左後、右前、右後の四つに区分することが多いです。
低床車両の制作
Section titled “低床車両の制作”車両底面の高さの座標が負の値になるようにモデルを制作します。
線路天面が-1mとなるため、それを考慮して設計します。
カスタムボタンを使用した種別変更
Section titled “カスタムボタンを使用した種別変更”JSONでカスタムボタンを定義し、その値を描画スクリプトから取得します。
取得した値を元に条件分岐を行い、描画処理を実装します。
特殊発光の実装
Section titled “特殊発光の実装”特殊発光は、車両の車内部分のテクスチャを前照灯として実装し、常時前照灯を点灯させることで夜間やトンネル内で車内部分のみを発光させ、実感的な照明効果を得るためのテクニックです。
デフォルト機能のみで実装する方法と、描画スクリプトを使用する方法があります。
- 光らせたい部位(主に客室)と、それ以外の部位を完全に別のUVにマッピングします。
- 光らせたい部位に対して、通常の手順で前照灯を実装します。
- Minecraft内で「前照灯・尾灯オン」を指定します。
これにより、通常は点灯しない中間車を含むすべての車両のライトが点灯します。
ただし、先頭車両の前照灯・尾灯が進行方向に関係なく常時点灯するため、そのままではライトが本来の動作をしなくなります。
そのため、以下の2つの車両モデルを別々に実装し、進行方向に応じて適切に設置・撤去を行うことで対応します。
- 尾灯部分に発光を設定しない先頭車専用モデル
- 前照灯部分に発光を設定しない後尾車専用モデル
描画スクリプトを使用する場合は、進行方向を検知し、それに応じて前照灯・尾灯の発光部分の描画を切り替えることで、単一の車両モデルで対応可能です。
方向幕の実装
Section titled “方向幕の実装”方向幕のテクスチャを制作し、JSONで実装します。
時間で切り替わる方向幕の実装
Section titled “時間で切り替わる方向幕の実装”方向幕を通常のオブジェクトとして描画し、描画スクリプトで現在時刻を取得します。
取得した時刻を元に条件分岐を行い、描画する行先や種別を切り替えます。
サウンドリブの使用
Section titled “サウンドリブの使用”サウンドリブは、音声ファイル(.ogg)やその再生条件を定義したスクリプト(.js)を含む、不完全なアドオンの形式の配布物です。
RTMは、JSONで指定されたファイルがそのアドオンに含まれるかどうかを区別しないため、他のアドオンに含まれるファイルを自由に参照できます。
これを利用して外部から音声ファイルを読み込み、既製のリアルな音声を簡単に利用できます。
複数のスクリプトを同時に使用する方法
Section titled “複数のスクリプトを同時に使用する方法”include文を使用して外部スクリプトを読み込みます。
ただし、一般的なJavaScriptで利用されるimport宣言やrequire文と異なり、モジュール化はされず、読み込まれるスクリプトの文字列が読み込むスクリプトにインライン展開されるだけであるため、名前衝突が発生する可能性があります。
また、RTMで使用可能なvar宣言は同じ変数を複数回宣言してもエラーにならないため、この点にも注意が必要です。
スクリプトを統合する方法
Section titled “スクリプトを統合する方法”RTMのエコシステムにはパッケージ管理システムやモジュールバンドラがないため、依存関係を解決するにはコードを手動でコピーアンドペーストします。
最高速度・加速度・減速度の設定
Section titled “最高速度・加速度・減速度の設定”最高速度と加速度はJSONで設定できます。
減速度はKaizPatchXを使用している場合にのみJSONで設定可能です。
そうでない場合には、サーバースクリプトを使用して毎Tick現在速度を上書きすることで実装します。
追加パーツの使用
Section titled “追加パーツの使用”3DCG制作ソフトの「インポート」や「マージ」機能を使用して追加パーツを読み込みます。
Metasequoia4の場合は「ファイル」 -> 「オブジェクトの挿入」を使用します。
追加のテクスチャが必要な場合は、マッピングの変更や材質の追加を行ってください。
JSONでseatPosやslotPos(RTM1)、seatPosF(RTM2)を使用して設定します。
seatPosはMinecraftのブロックの1px単位(1/16ブロック)、slotPosやseatPosFはメートル単位で指定します。
JSONとスクリプトの併用
Section titled “JSONとスクリプトの併用”描画スクリプトを指定すると、JSONでの処理は無視されるため、基本的に併用はできません。
パンタグラフをw51規格に対応させる
Section titled “パンタグラフをw51規格に対応させる”パンタグラフの集電舟、並びにすり板の架線との接触面の高さが、+4.10mになる1ようにモデルを制作します。
Footnotes
Section titled “Footnotes”-
hi03著「W51 規格 説明書」 ↩