SearchPoint暴走列車
2008/2/22 | 投稿者: ghost
先だって“SearchPoint命令の使い道がない”と書いたんですが、使い道を見つけてしまいました。バカ、バカ、三日前のオレのバカ。使い道ない、なんて言ってゴメンよ、I.MAGiCの中の人。っつーか、中の人に謝れ!謝れ!三日前のオレ。
と、既にネタ臭さをプンプン漂わせておりますが、実現される事柄は至極まともです。ちょっと難がありますけども。
とりあえず、ポイントがたくさんあるけれども行き止まりのないレイアウトを作ります。リバース区間があったりした方が面白いです。面倒臭いと感じる人は、とにかく、フレキシブルレールでたくさんのポイントを手当たり次第につなげばOK。

<たとえば、こんなのでもいい>
ポイントを10コ配置して適当につないでみました。わかりやすいようにポイントをレイヤー分けして表示色を変えていますが、これは必須ではないです。ただし、ポイントの名前はユニークにしてください。ポイントをコピー&貼り付けしていなければ、ユニークな名前になっているはずですが、念のためご確認を。ポイントの名前もユニークでなくてもOK。
次に、レイアウト上のすべてのポイントに以下のスクリプトをコピー&ペーストします。ポイント毎に書き換えなきゃなんないことはまったくないです、全部同じです。
<こんな感じ>
動画では、この仕掛けの運転台視点の凄まじさとか、カックン具合が伝わらないと思うので、是非各自お手元で同じような実験レイアウトを作って体験してみてください。んでもって、なんか、書いてて自分で阿呆らしくなってきたので、解説はリクエストベースで対応します。まぁ、コメント読めばだいたいわかると思いますけども。
1
と、既にネタ臭さをプンプン漂わせておりますが、実現される事柄は至極まともです。ちょっと難がありますけども。
* * *
とりあえず、ポイントがたくさんあるけれども行き止まりのないレイアウトを作ります。リバース区間があったりした方が面白いです。面倒臭いと感じる人は、とにかく、フレキシブルレールでたくさんのポイントを手当たり次第につなげばOK。

<たとえば、こんなのでもいい>
ポイントを10コ配置して適当につないでみました。わかりやすいようにポイントをレイヤー分けして表示色を変えていますが、これは必須ではないです。
次に、レイアウト上のすべてのポイントに以下のスクリプトをコピー&ペーストします。ポイント毎に書き換えなきゃなんないことはまったくないです、全部同じです。
<ポイントスクリプト>次に、編成を1つ、どこでもいいので適当に配置して、以下のスクリプトをコピー&ペーストします。
//ポイント分岐数の取得
Var VarBranchCount
GetBranchCount VarBranchCount
BeginFunc MtdChangePoint
Var Tmp
//ポイントの位を1つ進める
GetPointBranch Tmp
add Tmp 1
if> Tmp VarBranchCount
//分岐数を越えたら0に戻す
set Tmp 0
endif
SetPointBranch Tmp
EndFunc
<編成スクリプト>ビュワーを起動してみましょう。アラ不思議!(でもないかw)センサーが1つもないのに、編成がポイントにつっかえることなく走り続けます、っつーか止まれませんwww
//グローバル変数
Var VarVoltage
setf VarVoltage 1.0
VarPoint ObjPoint
//出発
SetVoltage VarVoltage
call this MtdDoNotStop
BeginFunc MtdDoNotStop
Var Tmp
//進行方向のポイントをチェック
SearchPoint 16.0 ObjPoint
//ポイントがあったらとりあえず切り替える
if ObjPoint
call ObjPoint MtdChangePoint
endif
//止まってないかチェック
GetCurrentVoltage Tmp
if> Tmp 0.0
//走っていれば走行電圧を覚えて次回も同様に
mov VarVoltage Tmp
SetEventAfter this MtdDoNotStop Tmp 33
else
//止まっていたらちょびっと逆走
Turn
SetVoltage 1.0
SetEventAfter this MtdRetryPoint Tmp 1
endif
EndFunc
BeginFunc MtdRetryPoint
Var Tmp
//ポイント切り替え試行
if ObjPoint
call ObjPoint MtdChangePoint
endif
//元の進行方向へ元の速度で走行再開
Turn
SetVoltage VarVoltage
//また同じことの繰り返し
SetEventAfter this MtdDoNotStop Tmp 33
EndFunc
<こんな感じ>
動画では、この仕掛けの運転台視点の凄まじさとか、カックン具合が伝わらないと思うので、是非各自お手元で同じような実験レイアウトを作って体験してみてください。んでもって、なんか、書いてて自分で阿呆らしくなってきたので、解説はリクエストベースで対応します。まぁ、コメント読めばだいたいわかると思いますけども。

この記事へのトラックバックURLはありません
トラックバック一覧とは、この記事にリンクしている関連ページの一覧です。あなたの記事をここに掲載したいときは、「記事を投稿してこのページにお知らせする」ボタンを押して記事を投稿するか(AutoPageを持っている方のみ)、記事の投稿のときに上のトラックバックURLを送信して投稿してください。
→トラックバックのより詳しい説明へ
→トラックバックのより詳しい説明へ