ライト制御の手法

貨車ばかり作るような方か、サハばかり作る方(←ありえませんが)でない限りは
車輌PIを製作する上で、一度はライト関連の処理をする機会があるでしょう。
基本的な作り方はマニュアルを見れば分かりますが、今回はライトを制御する
手法を紹介します。
※今回は室内灯は含めないことにします。

ライト制御の必要性

  大抵、ライト関連の処理は、「走行方向」「連結の状態」、「スイッチ」によって
  変化するものです。作者によっては、「昼か夜か」という条件を
  含める場合もありますが、いずれにしても定義のIF文(& ApplySwitch文)
  で制御しています。
  特に先にあげた2つはとても重要になります。走行方向を無視すれば
  前照灯が後を照らすようなことになりますし、連結を無視すれば
  連結面であろうとお構いなしに煌々と電灯が隣の車輌を照らします。

そのいち 走行方向による切り替え

  今回はフレアの定義方法などについては説明しません。
  マニュアルを見たり、他のページを参考にして勉強してください。
  さて、走行方向は"_FRONT"というスイッチで判定できます。
  If文の説明とか、小難しいところは他に任せるとして、例えば……
If !"_FRONT" {
  ~~
}
  と記述したとき、車両の前方(Z軸+方向ともいいます)と、進行方向が一致している時に「~~」の部分が実行されます。
  これを使って実際のライト制御部分を書くとこうなります。
If !"_FRONT" {
  [向きAのヘッドライト定義]
  [向きBのテールライト定義]
}Else{
  [向きAのテールライト定義]
  [向きBのヘッドライト定義]
}
  この時、AがZ+方向、BがZ-方向になるようにしてあげると、上手い事いくはずです。
  これで、前後方向の判定はできました。

そのに 連結状態による切り替え

  まーこのままでも単行運転するときはそれでいいんですけど。
  複数の車輌で編成にするときは連結面でもライトが付いてしまいます。
  今回はこれを修正したいと思います。
  連結の状態を調べるには"_CONNECT1"と"_CONNECT2"スイッチを使います。
  それぞれ前方(Z軸+方向)、後方(Z軸-方向)に車輌があるかどうかの判定に使うスイッチです。
If !"_CONNECT1" {
  ~~
}
  と書くと、「~~」の部分は前方に連結車両が無い時だけ、実行されるようになります。
  "_CONNECT2"の時は後方の判定です。
  では前回の構文に連結判定を足します。じゃん。
If !"_FRONT" {
  If !"_CONNECT1" {
    [向きAのヘッドライト定義]
  }
  If !"_CONNECT2" {
    [向きBのテールライト定義]
  }
}Else{
  If !"_CONNECT1" {
    [向きAのテールライト定義]
  }
  If !"_CONNECT2" {
    [向きBのヘッドライト定義]
  }
}
  これで前後と連結の判定はカンペキ!!なハズ。

  とゆーわけでひとまずこのコーナーはおしまいデス。
  ユーザスイッチで動作を切り替えることも出来ますがその辺は応用編なので、いろんなHowToページを見てがんばってください。
  では!!
最終更新:2016年07月03日 04:12
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。