先日自分で撒いたタネをネタとして自分で回収するアレ。
Train Simulator 京急・都営浅草・京急線に出てたので知ったのですが、先代の京成スカイライナー、AE100型にはちょっと変わった定速運転制御が搭載されているそうです。
下手な写真ですが2010年11月撮影。この時既に後継の2代目AE型も走っていました。
こいつの定速制御は、25km/hのときにP5に入っていると定速スイッチがONになり、定速制御中はP4で速度キープ、P3でブレーキ(P5はふつうに加速)になります。P2以下に戻すと定速スイッチが切れます。
動作している様子はゲームのプレイ動画をご覧になるとよいでしょう。
で、こんな感じの仕様をVRMのトラコンを使ってマネしたものが、次のコードです。編成スクリプトにコピペするとそのまま動きます。
//
// Settings
//
SetNotch 5 8
SetNotchSpeed 1 1 15
SetNotchSpeed 2 25 43
SetNotchSpeed 3 33 68
SetNotchSpeed 4 40 85
SetNotchSpeed 5 55 120
SetNotchParam -1 25
SetNotchParam -2 25
SetNotchParam -3 25
SetNotchParam -4 25
SetNotchParam -5 25
SetNotchParam -6 25
SetNotchParam -7 25
SetNotchParam -8 100
SetInputMode 1
//
// Setup
//
// Var FlgActive // Activeで1
Var VarCrtNotch
Var FlgConstCtrl // 定速制御ONで1
Var EidNotchWatcher
Var EidFcsIn
Var EidFcsOut
SetEventFocusIn MtdFcsIn EidFcsIn
SetEventFocusOut MtdFcsOut EidFcsOut
BeginFunc MtdFcsIn
SetEventFrameTick this MtdNotchWatcher EidNotchWatcher
EndFunc
BeginFunc MtdFcsOut
KillEvent EidNotchWatcher
EndFunc
BeginFunc MtdNotchWatcher
Var a
GetInputMode a
if a
GetCurrentNotch VarCrtNotch
if> VarCrtNotch 0
Var crtspd
GetNotchSpeed VarCrtNotch crtspd a // 定格は仮
GetCurrentSpeed crtspd
ifeq VarCrtNotch 5
if>= crtspd 25.0
set FlgConstCtrl 1
SetNotchParam 4 1
SetNotchParam 3 50
SetNotchSpeed 3 24 25
endif
SetNotchParam 5 100
else
if<= VarCrtNotch 2
set FlgConstCtrl 0
SetNotchSpeed 3 33 68 // Settingsのところと同じ値!
endif
ifzero FlgConstCtrl
if> crtspd a // 現在速度>均衡速度
SetNotchParam VarCrtNotch 6
else
// call this MtdSetAccPrm
set a 500 // 500なのは、最大5ノッチだから
div a VarCrtNotch
SetNotchParam VarCrtNotch a
endif
endif
endif
endif
// DEBUG
DrawVar VarCrtNotch
GetNotchParam VarCrtNotch a
DrawVar a
if FlgConstCtrl
DrawMessage "定速制御ON"
else
DrawMessage "定速制御OFF"
endif
DrawMessage ""
endif
EndFunc
定速制御時のP3ノッチの動作は、減速しすぎる戻しノッチを逆手に取ったかたちです。P4(速度キープ)は、NotchParamを1にしてしまってほとんど速度が動かないように見せかけています。
:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+
ちなみに本ブログのVRMスクリプトの表示ですが、IEだとインデントが深すぎて見にくいと思います。ChromeかFirefoxでごらんください。
最近のコメント