VRM4 スクリプト講座 -車両編-
この章で主に扱うスクリプト
SetSmoke 変数 //蒸気機関車の煙を操作 SetHeadmark 変数 //ヘッドマークを操作 SetPantograph パンタ番号 変数 //パンタグラフの状態を操作 SetHeadlight 変数 //ヘッドライトの操作 SetTaillight 変数 //テールライトの操作 SetRoomlight 変数 //室内灯の操作 SetSignlight 変数 //字幕灯等の操作 SetModelOption 変数A 変数B //各オプションの状態を操作 SetShuntingCarIndicator 変数 //入換車両標識を操作 SetTransparent 変数 //半透明状態の操作 SetNCHeadlight 変数A 変数B //ヘッドライトの特殊操作 SetNCTaillight 変数A 変数B //テールライトの特殊操作 ResetNCHeadlight //SetNCHeadlight操作のリセット ResetNCTaillight //SetNCTaillight操作のリセット
教材
以下のレイアウトをダウンロードして使用します。0号か4号~最新号のいずれかが必要です。編成は先頭車及び機関車を配置してください。
(画像の駅部品は2号。無くても良い)
演習
1. SetRoomlight & SetTaillight, SetSignlight & SetNCHeadlight, SetNCTaillight & SetTransparent
下記のスクリプトは「Set~light」の命令と「SetTransparent」を実験するスクリプトです。zキーでそれぞれの項目を一つずつ試すことができます。スクリプトは編成の先頭車両にコピー&ペーストします。
//先頭車両にコピペ Var aa Var count Var switch SetEventKey this Event aa z DrawMessage "[ z ] キーを押そう!" BeginFunc Event // 6つの動作を繰り返すための変数操作(0のときにリセット) add count 1 mov switch count mod switch 6 // 毎回の各項目リセット ResetNCHeadlight ResetNCTaillight SetTaillight 0 SetRoomlight 0 SetSignlight 0 SetTransparent 0 ifeq switch 1 SetNCHeadlight 0 1 // 先頭車両のヘッドライト点灯 endif ifeq switch 2 SetNCTaillight 0 1 // 先頭車両のテールライト点灯 endif ifeq switch 3 SetRoomlight 1 // 室内灯点灯 endif ifeq switch 4 SetSignlight 1 // ヘッドマーク点灯 endif ifeq switch 5 SetTransparent 1 // 車体を半透明にする endif EndFunc
2. SetHeadmark & SetPantograph, SetHeadlight & SetTaillight
「SetHeadmark」は対応している車両のみ動作します。0が無し、1がヘッドマーク1番前、2がヘッドマーク1番後ろ、3がヘッドマーク2番前、という風に変化します。「SetPantograph」は変数Aにパンダ番号を、変数Bにパンダの状態を入力します。下記のスクリプトは二つのスクリプトを同時に検証するものです。また「SetHeadlight」、「SetTaillight」も合わせて実験します。
ビュワーを起動したら「フライスルーカメラ」に切り替えて機関車の方向転換を行ってください。方向転換をするたびにヘッドライト、テールライトの前後が切り替わります。一方で「SetNCHeadlight」は方向転換に依存しません。これが二種類の点灯スクリプトの違いになります。場合によって使い分けましょう。
機関車の車両にコピー&ペーストしてください。
//機関車にコピペ Var aa Var count Var switch SetEventKey this Event aa z DrawMessage "[ z ] キーを押そう!" //項目のリセット SetPantograph 0 0 SetPantograph 1 0 SetHeadlight 1 SetTaillight 1 BeginFunc Event // 4つの動作を繰り返すための変数操作(0のときにリセット) add count 1 mov switch count mod switch 4 // 4通りのヘッドマークの配置を行う SetHeadmark switch ifeq switch 1 SetPantograph 0 1 SetPantograph 1 0 endif ifeq switch 2 SetPantograph 0 0 SetPantograph 1 1 endif ifeq switch 3 SetPantograph 0 1 SetPantograph 1 1 endif ifzero switch SetPantograph 0 0 SetPantograph 1 0 endif EndFunc
3. SetSmoke & SetShuntingCarIndicator
「SetSmoke」は蒸気機関車のみに使用するスクリプトで、煙の有無を操作できます。「SetShuntingCarIndicator」は機関車に使用するスクリプトで、入換車両標識(左側のテールライト)を操作します。
下記は両者を実験するスクリプトです。必要な命令の方の「//」を外して使用してください。機関車の車両部にコピー&ペーストします。
//機関車(蒸気機関車)にコピペしてから必要な「//」を外す Var aa Var switch SetEventKey this Event aa z DrawMessage "[ z ] キーを押そう!" BeginFunc Event //SetSmoke switch //SetShuntingCarIndicator switch xor switch 1 EndFunc
4. SetModelOption
「SetModelOption」は車両の一部ポリゴンを変更する特殊な命令です。
主に連結部の幌の有無を操作します。
対応する車両が限られていますのでマニュアルを見て使用してください。
//オプション搭載車両にコピペ Var aa Var count Var switch SetEventKey this Event aa z DrawMessage "[ z ] キーを押そう!" BeginFunc Event add count 1 mov switch count mod switch 4 //オプションの毎回初期化 SetModelOption 1 0 SetModelOption 2 0 ifeq switch 1 SetModelOption 1 1 SetModelOption 2 0 endif ifeq switch 2 SetModelOption 1 0 SetModelOption 2 1 endif ifeq switch 3 SetModelOption 1 1 SetModelOption 2 1 endif ifzero switch SetModelOption 1 0 SetModelOption 2 0 endif EndFunc
5. まとめ
多機能機関車を作ってみよう。
zキーを押すとパンダグラフが切り替わり、下りた時に電源がOFFになります。
xキーでヘッドマークが切り替えられます。
cキーで入換車両標識が切り替えられます。
vキーで半透明にできます。
//機関車などにコピペ Var aa Var bb Var cc Var dd Var ee Var a_ct Var b_ct Var a_sw Var b_sw Var c_sw Var d_sw SetEventKey this Event1 aa z SetEventKey this Event2 bb x SetEventKey this Event3 cc c SetEventKey this Event4 dd v SetEventTime this Start ee 100 SetHeadlight 1 SetTaillight 1 BeginFunc Start DrawMessage "[ z ] キー パンダグラフの操作" DrawMessage "[ x ] キー ヘッドマークの操作" DrawMessage "[ c ] キー 入換車両標識のON/OFF" DrawMessage "[ v ] キー 半透明設定のON/OFF" EndFunc BeginFunc Event1 add a_ct 1 mov a_sw a_ct mod a_sw 4 ifeq a_sw 1 SetPantograph 0 1 SetPantograph 1 0 SetHeadlight 1 SetTaillight 1 SetRoomlight 1 SetSignlight 1 endif ifeq a_sw 2 SetPantograph 0 0 SetPantograph 1 1 endif ifeq a_sw 3 SetPantograph 0 1 SetPantograph 1 1 endif ifzero a_sw SetPantograph 0 0 SetPantograph 1 0 SetHeadlight 0 SetTaillight 0 SetRoomlight 0 SetSignlight 0 endif EndFunc BeginFunc Event2 add b_ct 1 mov b_sw b_ct mod b_sw 3 SetHeadmark b_sw EndFunc BeginFunc Event3 SetShuntingCarIndicator c_sw xor c_sw 1 EndFunc BeginFunc Event4 SetTransparent d_sw xor d_sw 1 EndFunc
撮影用一発設定スクリプト
一通りのスクリプトを用意しておき、いらない物を「//」でキャンセルできます。スクリーンショットなどに非常に便利です。
//初期設定で、ヘッドライト、室内灯、サインライトの点灯、 //ヘッドマークが掲げられる。 SetHeadlight 1 //SetTaillight 1 SetRoomlight 1 SetSignlight 1 SetHeadmark 1 //SetSmoke 0 //SetTransparent 1 //SetModelOption 1 1 //SetModelOption 2 1 //SetShuntingCarIndicator 1 //SetPantograph 0 0 //SetPantograph 1 0