Rosso Laboratory

Rosso Laboratory

主に鉄道模型シミュレーター(VRM)などの仮想鉄道アプリを扱うブログです。またHDR写真の記事も書いています。

ドア開閉で比較


前回までは踏切にてVRMスクリプトPythonスクリプトでどちらが簡単かを比較しましたが、今回は同じ鉄道模型シミュレーターNXにて自動センサー制御とPythonスクリプトでどちらが簡単かをドア開閉で比較します。

自動センサーですと、


センサーを踏んでから0秒後に減速開始し435mm先で停止。(5秒以内に止まることをチェックした上で)
センサーを踏んでから5秒後にホームドアを開く。
センサーを踏んでから6秒後に車両のドアを開く。
センサーを踏んでから12秒後に車両のドアを閉じる。
センサーを踏んでから13秒後にホームドアを閉じる。
センサーを踏んでから15秒後に車両出発。
センサーを踏んでから25秒後に加速開始し1000mmで100km/hへ。

となり、全て「センサーを踏んでから何秒後に」という指示になります。一方Pythonスクリプトですと、

LAYOUT ← ホームドアは初期状態で開いているため、これは自動センサー制御でも必要
    if ev == 'init':
        vrmapi.LAYOUT().CrossingGroupCTRL("door01", 2)

TRAIN
    elif ev == 'after':
        if param['eventUID'] == 100:
            obj.CloseDoor(0, False)
            vrmapi.LAYOUT().CrossingGroupCTRL("door01", 2)
            obj.SetEventAfter(3,200)
        if param['eventUID'] == 200:
            obj.AutoSpeedCTRL(400,1.0)
    elif ev == 'autospeed':
        s = obj.GetSpeed()
        if s == 0:
            obj.OpenDoor(0, False)
            vrmapi.LAYOUT().CrossingGroupCTRL("door01", 1)
            obj.SetEventAfter(10,100)

SENSOR
    if ev == 'init':
        obj.SetSNSMode(0)
    elif ev == 'catch':
        train = obj.GetTrain()
        train.AutoSpeedCTRL(435,0)

センサーで検知した車両を435mm先で速度0にし、
autospeedイベント完了時に速度0なら車両とホームドアを開き10秒待つ。
10秒経ったら車両とホームドアを閉じ3秒待つ。
3秒経ったら400mm先で速度MAXへ。

という風に「センサーを踏んでから何秒後」という時間の考え方は必要なくなります。この方が考え方としては自然です。

よってPythonスクリプトが書ける人ならば恐らくスクリプトの方がラクでしょう。プログラムは全然書けないという人なら自動センサー制御しかありませんが、ちょっと考え方が面倒なだけで特に難しい訳ではありませんから心配は無用です。但しこれは駅が1つだけの場合の話で2つ3つと駅が増えてくると自動センサーのコピペとちょっとした書き換えで対応できる自動センサー制御の方がラクであろうと思われます。
PVアクセスランキング にほんブログ村