◆鉄道模型、鉄道模型シミュレーター4、2個のセンサーで編成の進行方向を取得は可能か?ライブ配信!

鉄道模型、全般記事

編成の進行方向の取得に「GetDirection2」を使わず、2個のセンサーの通過順で編成の進行方向が取得できないかを考えてみます。

本日(2024.05.03)、21時30分頃より、編成の進行方向取得を考えるライブ配信を以下の場所で、行わせて頂きます。

【鉄道模型ライブ配信】鉄道模型シミュレーターでレイアウト制作_027/2個のセンサーで編成の進行方向を取得は可能か?【Vtuber】水風七夏さんはチャット読み上げとお話しです☆【ななついろチャンネル】
YouTubeさんで視聴

「鉄道模型シミュレーター4(VRM4)」は、踏切や信号機のコントロールを行う為に「スクリプト」を記述しなければなりませんが、これがなかなか厄介で、「このような事を行いたい」と思っても、実際にどのようにスクリプトを記述すればよいのか分からない事も結構ございます。

それは、添付スクリプトマニュアルの殆どのコマンドが「命令」と「書式」しか説明されておらず、具体的なサンプルが無いに等しい事が、より理解を難しくしている要因です。

そして、スクリプトウィザードが生成するスクリプトは、それぞれのコマンドの意味がコメントで説明されておらず、ぱっと見で、どのような意味が有るのか理解し難い所も、厄介です。

さて、今回は、センサー2個を使って車両の進行方向を特定できないか?

・・・という事に挑んでみたいと思います。

編成の進行方向の取得は「GetDirection2」命令が有り順方向は「1」、逆方向は「-1」を取得できるのですが、これは編成の進行方向をユーザーの操作によって変更した場合、正しく取得できます。

しかし、順方向で走行中の編成が、リバース線を走行し、進行方向が反転した場合、編成そのものは順方向で走行し続けているので「GetDirection2」で取得した値は「1」のままです。

つまり、編成は順方向での走行ですが、線路を逆方向で走行している状態になりますので、「GetDirection2」をアテにしてスクリプトを記述していると、意図しない動作となってしまいます。

2個のセンサーを使って、2個のセンサーを車両が通過した順序により、車両の進行方向を特定できれば、意図しない動作から解放されるのではないかと思います。

線路上に、

===[センサー1]===[センサー2]===

のように配置し、

[センサー1]→[センサー2]は順方向
[センサー1]←[センサー2]は逆方向

という事が判定できれば良いのですが、

[センサー1]→[センサー2]の場合、

[センサー1]通過でグローバル変数Aに「1」を格納

[センサー2]通過時、グローバル変数Aが「1」なら順方向

[センサー1]←[センサー2]の場合、

[センサー1]通過でグローバル変数Aに「-1」を格納

[センサー2]通過時、グローバル変数Aが「-1」なら逆方向

ここまでならすぐ思い付きますが、

[センサー1]→[センサー2]の場合、[センサー2]を通過した時、グローバル変数Aに「-1」が入ってしまい、

[センサー1]←[センサー2]の場合、[センサー1]を通過した時、グローバル変数Aに「1」が入ってしまいますので、そう単純ではございません。

そこで、

[センサー1]通過時、グローバル変数Aが「-1」かどうか判定

グローバル変数Aが「-1」の場合(if)、逆方向確定

そうでなければ(else)、グローバル変数Aに「1」を格納

[センサー2]通過時、グローバル変数Aが「1」かどうか判定

グローバル変数Aが「1」の場合(if)、順方向確定

そうでなければ(else)、グローバル変数Aに「-1」を格納

・・・とすれば、正しく進行方向の判断ができるでしょうか?

しかし、ビュワーを起動した直後、グローバル変数Aは値の無い「NULL」が入っているはずですので、「1」と「-1」の判断では、正しく動作しません。

では、最初(ビュワー起動直後)に初期値としてグローバル変数Aに「1」を格納した場合、

[センサー1]→[センサー2]は問題なく動作しますが、
[センサー1]←「センサー2]は正しく動作しません。

つまり、最初に、[センサー1]を通過する前にユーザーの操作で、編成の進行方向を反転させてしまい、「センサー2]を先に通過させると問題となります。

従って、ビュワー起動直後の処理として、グローバル変数Aが「NULL」の場合、

[センサー1]通過時、グローバル変数Aに「1」を格納
[センサー2]通過時、グローバル変数Aに「-1」を格納

というif文を追加しなければなりません。

しかし、グローバル変数Aが「NULL」かどうかを判定する方法として

[センサー1]側の初回対策処理、

if グローバル変数A

 //グローバル変数Aが「NULL」なら何もしない

else

 set グローバル変数A 1

endif

[センサー2]側の初回対策処理、

if グローバル変数A

 //グローバル変数Aが「NULL」なら何もしない

else

 set グローバル変数A -1

endif

・・・とすれば、正しく動作するでしょうか?

ここまでの考えを、本日のライブ配信で、制作、確認が出来ればと思っております。
ホント「VRM4」のスクリプトは難しい・・・OTL

ライブ配信では雑談も大歓迎ですので、お気軽にお声をお掛けくださると嬉しく思います!どなたからもお声が掛からない場合は、黙々と制作作業を行いますが、お声が掛かれば、そちらへの応答を、優先させて頂きます!

どうぞ、よろしくお願い申し上げます。

関連配信も置いておきます。

【鉄道模型ライブ配信】鉄道模型シミュレーターでレイアウト制作_026/編成の進行方向に依存しない複線踏切の制作!【Vtuber】水風七夏さんはチャット読み上げとお話しです☆【ななついろチャンネル】
YouTubeさんで視聴

【鉄道模型ライブ配信】鉄道模型シミュレーターでレイアウト制作_023/改善版複線踏切をレイアウトに移植!【Vtuber】水風七夏さんはチャット読み上げとお話しです☆【ななついろチャンネル】
YouTubeさんで視聴

●VTuber 水風七夏さんのアクリルフィギュアを販売いたしております♪
↓商品販売ページ
https://nanatsuiro.booth.pm/
どうぞよろしくお願いいたします!

水風七夏さんの動画も以下においておきます。

【鉄道模型×ボカロオリジナル曲】虹はどんな色かな?/翠碧色の虹 OP/kokone 心響 Rana 結月ゆかり/歌枠/トリオ/カラオケ有/コラボ希望/新人VTuber 水風七夏 天美心桜 高月笹夜
YouTubeさんで視聴

【鉄道模型×ボカロオリジナル曲】虹はどんな色でも虹/翠碧色の虹 ED/kokone 心響 Rana 結月ゆかり/歌枠/トリオ/カラオケ有/コラボ希望/新人VTuber 水風七夏 天美心桜 高月笹夜
YouTubeさんで視聴

【自己紹介】はじめまして!水風七夏と申します☆私と、チャンネルの紹介もいたします♪ワンピース セーラー服 水着 紲星あかり 鉄道模型 ゲーム 小説 イラスト 音楽制作 ボカロP【新人Vtuber】
YouTubeさんで視聴

WebSite : ななついろひととき
http://nanatsuiro.my.coocan.jp/

コメント

タイトルとURLをコピーしました