VRM4 ランダム走行レイアウト
ダウンロード
操作方法
ユーザーは列車の速度を変えるだけでポイントは自動的に切り替わります。
ポイントの切り替えは規則性を持たず、ランダムで直進か曲折を選択します。
レイアウト上の編成は好みの編成に交換できます。
全体図右下のカメラで一応ほぼ全体を見渡せるようになっています。
センサーがうまく動作しない場合は場所や有効範囲を変えてあげると良いかも。
レンダリング範囲は「やや広い」がお勧めです。
使用スクリプト紹介
自動で切り替わるポイントはポイント本体とセンサー3つ、それと乱数を発生させるセンサースクリプトで成り立っています。
- センサー1(a1)
Var evid SetEventSensor snsev, evid BeginFunc snsev ifzero aa.aaa call "aa", branch2 set aa.aaa 1 else set aa.aaa 0 endif EndFunc
- センサー2(a2)
Var evid SetEventSensor snsev, evid BeginFunc snsev call "aa", branch0 xor aa.aaa 1 EndFunc
- センサー3(a3)
Var evid SetEventSensor snsev, evid BeginFunc snsev call "aa", branch1 xor aa.aaa 1 EndFunc
- ポイント(aa)
Var aaa BeginFunc branch0 SetPointBranch 0 EndFunc BeginFunc branch1 SetPointBranch 1 EndFunc BeginFunc branch2 SetPointBranch num.ran EndFunc
- 乱数制御(num)
Var ran Var con SetEventTimer this start con 100 BeginFunc start irnd ran and ran, 1 //DrawVar ran EndFunc
解説
・乱数制御(num)の動き
startメソッドを0.1秒毎に実行し、ran関数に0か1かをランダムに出力し続けます。
出力している様子は「//DrawVar ran」の「//」を消すことで表示されます。
・センサー1(a1)から列車が進入してきた場合
まず「ifzero aa.aaa」で列車がどこから進入してきたのかを確認します。
二分岐側からの進入で無いことを確認するとポイントの「BeginFunc branch2」を呼び出します。
「BeginFunc branch2」は「ran」からランダムで出力される0か1の数字を読み取りその方向にポイントを分岐させます。
・センサー2or,3(a2or,a3)から列車が進入してきた場合
ポイントを進入してきた方向に設定するようメソッドを呼び出します。
この時の「xor aa.aaa 1」等の処理は列車がポイント上を通過中に他のセンサーがポイントの変更することを防ぐための処理です。
これが無くても編成がポイント上に存在するとポイントは動作しませんが、予期しない不具合が出ることを避けるために組み込みました。
2006 - 2022 Caldia All rights reserved.