2006/10/27

【何か】シリーズを作ってみよう(その11)  【何か】スクロール
前回へ戻る>

少し間が空いたので、もう誰も何も覚えていないかも知れませんが。

与太はさておき。前回までで【何か】センサーから受け取ったパラメータが0〜300の場合、それを到達すべき速度と解釈して、編成の加減速性能に応じて然るべく速度を変化させる部分が完成しました。

今回からは、パラメーターが0以下、または301以上の場合、これを停車位置までの距離と解釈して然るべく停車させ、その後、再発車させる部分について解説していきます。具体的には、こちらで示したメソッドmainからcallされる、メソッドsubStopの中身について、になります。

具体的なスクロールの中身に入るまでに、メソッドsubStop(と、そこからさらにcallされるメソッド)では何を実現すべきなのか、についてまとめておくことにしましょう。


● VarParameterの距離だけ走って列車を止める

subStopがcallされる時点で、グローバル変数VarPatameterには停車位置までの距離が入っています。これを使って、ピタリと列車を停止位置に止めましょう。

アップデーター4.0.4.0で追加されたAutoSpeedCtrl命令を使って・・・といきたいところですが、どうもボクが調べた限りにおいてはこの命令はまだ使い物にならないようなので、こちらで紹介している方法を使うことにします。I.MAGiCの中の人はAutoSpeedCtrlが0以外の電圧に反応しないのと、これで止めた後の動作不良についてデバッグするように。っつーか、テストしてから出荷したか?

● VarFlagが1であれば、停車から一定時間が経過してから方向転換する

【何か】センサーから受け取ったパラメーターがマイナスの値であった場合、メソッドmainでグローバル変数VarFlagに1が代入されるようになっていました。これは、駅停車後、再出発の前に方向転換すべきであること、つまり、折り返し運転をすることを意味しているのでした。

これを実現するためには、第一に“VarFlagが1であれば方向転換する”をスクリプトで書かなければなりません。第二に、列車が停車してから一定時間後にそれをしなければなりません。特に第二の点を実現するには、二種類のイベントをうまく組み合わせる必要があります。

● さらに一定時間が経過したら再発車する

方向転換の有無に関わらず、列車を再発車させることにしていました。これを実現するために、第一には前述の方向転換の有無の判断のタイミングで再発車のためのイベントを設定すること、第二には、再発車後の速度と加速所要時間を決定すること、が必要になります。

大まかな課題は以上の通りです。この他、いくつか細かい注意すべき点がありますが、これは次回以降、具体的な中身を解説しながら触れていくことにします。

次回へつづく>
0

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


teacup.ブログ “AutoPage”
AutoPage最新お知らせ