Rosso Laboratory

andよりmodだな

前回の記事に出てきた「論理積 and」の③の使い方、つまりはVRM入道「and命令って何の役に立つの?」でghost氏が使った「論理積 and」の使い方は本当に役に立つのか?ということを検証してみました。まぁ、タイトルが結論になっちゃっていますが(笑)。



テストするために終着駅を作成しスクリプトを書きました。

ghost氏があの記事を書かれた時点では未だSearchPoint命令の実用性に気が付いておられなかった(?)ようなので、サンプルコードにはSearchPointが使われていません。よって、部品の固有名で参照されているので汎用性が乏しい。そこで、サンプルコードは流用せずに1から書き直しました。・・・その結果、コピペで増殖させても使える終着駅が完成しました。舞台作りに1時間、スクリプト作成に1時間程度のもんです。コレはコレで使えそうだから、そのうち使うとして、



この「論理積 and」を使ったスクリプトは確かにスッキリと書けて良い流れでしたが、ポイントの動作を指定する上で、

//番線動作指示メソッド
BeginFunc MethodSensorEvent
GetSenseTrain ObjTrain
mov this VarPlatformNo ObjTrain VarPlatformNo
ifeq VarPlatformNo 1
set ObjTrain VarFlag 0
endif
ifeq VarPlatformNo 2
set ObjTrain VarFlag 3
endif
ifeq VarPlatformNo 3
set ObjTrain VarFlag 5
endif
ifeq VarPlatformNo 4
set ObjTrain VarFlag 9
endif
ifeq VarPlatformNo 5
set ObjTrain VarFlag 1
endif
EndFunc


赤い文字のように10進数で表記するので、やはり直感的には判りづらいものです。そこで、

//番線動作指示メソッド
BeginFunc MethodSensorEvent
GetSenseTrain ObjTrain
mov this VarPlatformNo ObjTrain VarPlatformNo
ifeq VarPlatformNo 1
set ObjTrain VarFlag 0000
endif
ifeq VarPlatformNo 2
set ObjTrain VarFlag 0011
endif
ifeq VarPlatformNo 3
set ObjTrain VarFlag 0101
endif
ifeq VarPlatformNo 4
set ObjTrain VarFlag 1001
endif
ifeq VarPlatformNo 5
set ObjTrain VarFlag 0001
endif
EndFunc


2進数のように表記してやると、ポイントをどう動かすのか判りやすいでしょう。

ということで、「10進数で表記して2進数で処理するandを使う方法」よりも「2進数で表記して10進数で処理するmodを使う方法」の方が現時点では扱い易そうという結論になりました。VRMスクリプトで2進数表記の指定が出来れば、「論理積 and」を使う方が良いんだろうけどね。

ランキングに参加中。クリックして応援お願いします!

名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

※ブログ作成者から承認されるまでコメントは反映されません。

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最新の画像もっと見る

最近の「VRMスクリプト」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事