と自分で読み返して思った也。後段の「空振り」の腹いせか、切腹。
<関連記事>
・ハイペース過ぎますか?
・旧に青ガマが増えますが
・レイアウトコンテストですよー
・誉め殺された・・・のか?
・だからー、電波増幅って何よ?
・自分で楽しむx人に見せる。
・VRM4部門参戦予定の方は読むべし
投げっ放し気味に書いて、それに対する賛否両論の反応を見ながらVRMスクリプト解説を書く際の匙加減を計るつもりだったんですが、滑りました、切腹。蛇足ながら、以下の記事は応用が利く部類と思われるのでセルフピックアップしておく也。
<関連記事>
・目指せ完全自動運転(2)−区間閉塞を理解する
・目指せ完全自動運転(3)−閉塞信号スクリプト
・動的オブジェクト参照
・目指せ完全自動運転(8)−距離指定減速メソッド
・目指せ完全自動運転(11)−ある条件が整うまで待つメソッド

[停車用センサースクリプト]細かい部分としては、SIGNAL1/3がY現示になった時点でこれをR現示に切り替えSIGNAL5から進入してくる列車との衝突を回避するだとか(ここで以前仕掛けたR→Y、Y→G以外の遷移を禁止する措置が活きてくる)、SIGNAL5_1/2をMtdStopTrainが実行された時点でR現示にして初期化するだとか、ここには出てきませんが、SIGNAL5から進入した列車が本線を横切り終わった時点でSIGNAL1/3を強制的にG現示に切り替えて後続列車のために区間を開放するという後始末があったりしますが、ここまでの議論を理解できた方には最早説明は不要でしょう。
//制御対象信号
VarSignal ObjCtrlSignal
VarSignal ObjCtrlSignal1
VarSignal ObjCtrlSignal2
get ObjCtrlSignal "SIGNAL5"
get ObjCtrlSignal1 "SIGNAL1"
get ObjCtrlSignal2 "SIGNAL3"
//作業用信号
VarSignal ObjWorkSignal1
VarSignal ObjWorkSignal2
get ObjWorkSignal1 "SIGNAL5_1"
get ObjWorkSignal2 "SIGNAL5_2"
//理変数&センサーイベント設定
VarTrain ObjTrain
Var EventID
Var TimerID
Var TimerID1
Var TimerID2
SetEventSensor MtdSenseTrain EventID
//
//編成検知イベント
//
BeginFunc MtdSenseTrain
GetSenseTrain ObjTrain
call this MtdStopTrain
EndFunc
//
//編成駅停車メソッド
//
BeginFunc MtdStopTrain
get ObjTrain.StdObjSignal ObjPartnerSignal
call ObjTrain StdMtdStationStop
SetEventAfter this MtdWaitSignalG TimerID 3000
call ObjWorkSignal1 StdMtdSignalR
call ObjWorkSignal2 StdMtdSignalR
call this MtdChkSignal1a
call this MtdChkSignal2a
EndFunc
//
//出発信号制御メソッド
//
BeginFunc MtdWaitSignalG
ifeq ObjWorkSignal1.StdVarSignalPosition 6
ifeq ObjWorkSignal2.StdVarSignalPosition 6
call ObjCtrlSignal StdMtdSignalG
else
SetEventAfter this MtdWaitSignalG 1000 TimerID
endif
else
SetEventAfter this MtdWaitSignalG 1000 TimerID
endif
EndFunc
//
//SIGNAL1がRになるのを待つメソッド
//
BeginFunc MtdChkSignal1a
ifeq MtdCtrlSignal1.StdVarSignalPosition 1
call this MtdChkSignal1b
else
SetEventAfter this MtdChkSignal1a TimerID1 1000
endif
EndFunc
//
//SIGNAL1がYになるのを待つメソッド
//
BeginFunc MtdChkSignal1b
ifeq ObjCtrlSignal1.StdVarSignalPosition 3
call ObjWorkSignal1 StdMtdSignalG
call ObjCtrlSignal1 StdMtdSignalR
else
SetEventAfter this MtdChkSignal1b TimerID1 1000
endif
EndFunc
//
//SIGNAL3がRになるのを待つメソッド
//
BeginFunc MtdChkSignal2a
ifeq ObjCtrlSignal2.StdVarSignalPosition 1
call this MtdChkSignal2b
else
SetEventAfter this MtdChkSignal2a TimerID2 1000
endif
EndFunc
//
//SIGNAL3がYになるのを待つメソッド
//
BeginFunc MtdChkSignal2b
ifeq ObjCtrlSignal2.StdVarSignalPosition 3
call ObjWorkSignal2 StdMtdSignalG
call ObjCtrlSignal2 StdMtdSignalR
else
SetEventAfter this MtdChkSignal2b TimerID1 1000
endif
EndFunc
・ビル壁面の映画広告
・テクスチャ透過色の活用例
・ドリルはトンネルのみの為ならず