VRM入道

VRM侍は出家しますた(w    カリカリ

 
投稿者
メール

 
コメント
URL
コメントは新しいものから表示されます。
コメント本文中とURL欄にURLを記入すると、自動的にリンクされます。
投稿者:ghost
おぉ、壁を越えましたね。

次回から2回かけて、編成に信号を守らせる方法を解説します(先にこっちを説明した方が、最後のまとめがわかりやすいはずです)。そしていよいよ退避/追越列車が実現されます。お楽しみに。
投稿者:ゆゆぽん☆
動きました。

//信号遷移メソッド
BeginFunc MtdCtrlSignal
ifeq ObjNextSignal.VarSignalColor 3
call this MtdSignalG
endif
ifeq ObjNextSignal.VarSignalColor 1
call this MtdSignalY
endif
if VarSignalColor 6
SetEventAfter this MtdCtrlSignal WaitID 100
endif
EndFunc

順番どおりに入力していくと、動きました。
2編成使ってほぼ同時にセンサーを踏ませてみましたが、信号が矛盾したメソッドを受けることもありませんでした。

次回は出発・場内信号機の処理ですか?
その次に、保安機構組み込みと・・・。
・・・その前におやすみなさい(v_v)ZZZ
投稿者:ghost
パッと見、信号遷移メソッドに2つ問題があります。

(1) 緑だったら信号遷移メソッドを再実行、になっていること。正しくは“緑でなかったら”ですね。

(2) ifeq ObjNextSignal.VarSignalColor 1 が成立して信号を黄色に切り換えると、ObjNextSignal.VarSignalColorの値は3になります。

これに続けてifeq ObjNextSignal.VarSignalColor 3をやってしまっているので、これは「赤だったら緑にしろ」と意味的に同じになってます。

これはちょっとボクの書き方がマズかったかもです。正しい順番で書くと・・・

・次の信号が黄だったら自分を緑にする。
・次の信号が赤だったら自分を黄にする。
・自分が緑ではなかったら、信号遷移メソッドを100ミリ秒後に再実行する。

以上を修正して試してみてください。
投稿者:ゆゆぽん☆
信号スクリプトに


//信号灯火色管理変数
Var VarSignalColor
call this MtdSignalG
//次の信号
VarSignal ObjNextSignal
get ObjNextSignal Signal3
//条件待ち用イベント変数
Var WaitID


//灯火色設定メソッド
BeginFunc MtdSignalR
set VarSignalColor 1
SetSignal VarSignalColor
EndFunc

BeginFunc MtdSignalY
set VarSignalColor 3
SetSignal VarSignalColor
EndFunc

BeginFunc MtdSignalG
set VarSignalColor 6
SetSignal VarSignalColor
EndFunc


//閉塞実施メソッド
BeginFunc MtdSectionBlock
//イベントを解除
KillEvent WaitID
//灯火色切替メソッドを実行
call this MtdSignalR
//次の信号が赤以外になるのを待つメソッドを実行
call this MtdWaitNextSignal
EndFunc


//次の信号が赤以外になるのを待つメソッド
BeginFunc MtdWaitNextSignal
ifeq ObjNextSignal.VarSignalColor 1
SetEventAfter this MtdWaitNextSignal WaitID 100
else
call this MtdWaitNextSignalR
endif
EndFunc

//次の信号が赤になるのを待つメソッド
BeginFunc MtdWaitNextSignalR
ifeq ObjNextSignal.VarSignalColor 1
SetEventAfter this MtdWaitNextSignalR WaitID 100
else
call this MtdCtrlSignal
endif
EndFunc

//信号遷移メソッド
BeginFunc MtdCtrlSignal
ifeq ObjNextSignal.VarSignalColor 6
SetEventAfter this MtdCtrlSignal WaitID 100
endif
ifeq ObjNextSignal.VarSignalColor 1
call this MtdSignalY
endif
ifeq ObjNextSignal.VarSignalColor 3
call this MtdSignalG
endif
EndFunc

と書いたのですが、摩訶不思議な動作をします。

ある信号(例としてSignal1)と連動するセンサーを感知したら赤になり、ObjNextSignalの信号と連動するセンサーを感知したら黄色になります。
ここまではいいのですが、その次のセンサーを感知しても青にはならず、最後に編成を感知した信号から順に、赤…黄…黄…黄…となります。
編成がレイアウトを1周し、再度ある信号を通過すると、青になります。どこが間違いですか?

実験的代物

CSS無効化 ここで知った方法を使ってます

真・世界征服新着情報

今月のお勤め

2008年
← July →
Sun Mon Tue Wed Thu Fri Sat
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
Copyright (C) GMO Tea Cup Communication, Inc. All Rights Reserved.