TimeIF 「もしボタンが先に押されたら」

 SONY MESHのロジックタグには、標準で搭載していても問題なさそうですが、条件タグが存在しません。条件タグがあると、複数のボタンや、動きタグを用いて、「どちらが早く押された」、「どちらが早く動かされたか」を判定することができます。これを用いることで、任天堂スイッチの「ガンマン」のようなゲームをMESHで作成することができます。

main_s.png

 標準で準備されていないので、オリジナルでソフトウェアタグを作成する必要があります。オリジナルソフトウェアを作るための環境にMESH SDKがあります。少しのJavaScriptの知識があれば、誰でもソフトウェアタグを作成することができるようです。詳しくは、こちらのサイトを参照にしてください。

http://support.meshprj.com/hc/ja/articles/212780817

 ※今回は、プログラムがまったく分からなくても、コピー&ペーストするだけでタグを作成する方法をお教えいたします。

オリジナルでソフトウェアタグを作成して、使用するために、次の2つの手順が必要になります。

①MESH SDKを用いて、ソフトウェアタグを作成
 ブラウザ上で行います。

②MESHアプリに登録
 MESHアプリ上で行います。

①MESH SDKを用いて、ソフトウェアタグを作成

1.MESH SDKにユーザ登録を行いログインしてください。

[Create New Account]をクリックしてユーザ登録してください。登録したメールアドレスに通知が届きますので、メールに記載されているURLにアクセスすることで登録が完了します。

2.上部「Create New Tag」をクリックします。

001.png

3.上部メニューの中から「Import」をクリックします。

002.png

4.Please paste the JSON data and click "Load JSON" on header to import.」と記入された入力フォームをクリックし、以下のコードを張り付け、上部「Load JSON」をクリックします。

003.png

{"formatVersion":"1.0","tagData":{"name":"Time IF","icon":"./res/x2/default_icon.png","description":"先に入力された値を出力します。","functions":[{"id":"function_0","name":"先に入力された値を出力","connector":{"inputs":[{"label":"入力1"},{"label":"入力2"}],"outputs":[{"label":"出力1"},{"label":"出力2"}]},"properties":[{"name":"同時入力の待ち時間(秒)","referenceName":"TimeSET","type":"number","defaultValue":"2"}],"extension":{"initialize":"log(\"Initialize\");\n\nTimeSet_INPUT = new Array(2);\t//入力された時間の格納\n\nTimeSet_START =-1;\n\n\nLoopFlag =0;\n\n\nOutPut =-1;\n","receive":"log(\"Receive\");\n\nif(LoopFlag >=2){\n\tLoopFlag =0;\n\tTimeSet_START =-1;\n\tlog(\"Reset\");\n}\n\n\n//最初に実行する\nif(TimeSet_START ==-1){\n\tlog(\"TimeSet OK\");\n\tTimeSet_START =  Date.now();//時間の格納\n\tLoopFlag =0;\n}else{\n\tlog(\"TimeSet NG\");\n\n}\n\n//ピン設定\nif(index >=0 && index <=1){\n\tTimeSet_INPUT[ index ] = Date.now();//時間の格納\n}","execute":"log(\"Execute\");\nlog(properties.TimeSET);\n\n\nwhile(true){\n\tif( (Date.now() - TimeSet_START) >properties.TimeSET*1000 ){\n\t\tlog(\"Execute TimeOUT\");\n\n\t\tfor(i =0;i<2;i++){\n\t\t\tlog(i+\":\" + TimeSet_INPUT[ i ]);\n\t\t}\n\t\t\n\t\tif( TimeSet_INPUT[ 0 ]  > TimeSet_INPUT[ 1 ] ){\n\t\t\tOutPut =1;\n\t\t}else{\n\t\t\tOutPut =0;\n\t\t}\n\t\t\n\t\tLoopFlag ++;\n\t\t\n\t\tbreak;\n\t}\n}\n\nlog(\"Goto Result\" + LoopFlag);\n\n\n","result":"log(\"Result\");\n\n\n\nif(LoopFlag ==1){\t\n\nreturn {\n    indexes : [OutPut],   //コネクタから出力\n    resultType : \"continue\"\n}\n\n}else{\n\nreturn { resultType : \"stop\" }\n}"}},{"id":"function_1","name":"後に入力された値を出力","connector":{"inputs":[{"label":"入力1"},{"label":"入力2"}],"outputs":[{"label":"出力1"},{"label":"出力2"}]},"properties":[{"name":"同時入力の待ち時間(秒)","referenceName":"TimeSET","type":"number","defaultValue":"2"}],"extension":{"initialize":"log(\"Initialize2\");\n\nE_TimeSet_INPUT = new Array(2);\t//入力された時間の格納\nE_TimeSet_START =-1;\nE_LoopFlag =0;\nE_OutPut =-1;\n","receive":"if(E_LoopFlag >=2){\n\tE_LoopFlag =0;\n\tE_TimeSet_START =-1;\n}\n\n\n//最初に実行する\nif(E_TimeSet_START ==-1){\n\tE_TimeSet_START =  Date.now();//時間の格納\n\tE_LoopFlag =0;\n}else{\n}\n\n//ピン設定\nif(index >=0 && index <=1){\n\tE_TimeSet_INPUT[ index ] = Date.now();//時間の格納\n}","execute":"\nwhile(true){\n\tif( (Date.now() - E_TimeSet_START) >properties.TimeSET*1000 ){\n\t\t\n\t\tif( E_TimeSet_INPUT[ 0 ]  > E_TimeSet_INPUT[ 1 ] ){\n\t\t\tE_OutPut =0;\n\t\t}else{\n\t\t\tE_OutPut =1;\n\t\t}\n\t\t\n\t\tE_LoopFlag ++;\n\t\t\n\t\tbreak;\n\t}\n}\n\n\n","result":"log(\"Result\");\n\n\n\nif(E_LoopFlag ==1){\t\n\nreturn {\n    indexes : [E_OutPut],   //コネクタから出力\n    resultType : \"continue\"\n}\n\n}else{\n\nreturn { resultType : \"stop\" }\n}"}}]}}

5.上部「Save*」をクリックします。

004.png

かならず[Save*]をクリックし忘れる人が多いので、忘れないようにクリックしてください。

005.png

IFタグが生成されました。

②MESHアプリに登録

1.MESHアプリの設定から「MESH SDK」をクリックします。

001.png

2.MESH SDKアカウント情報を入力し、[サインイン]します。

001.png

3.カスタムから[追加]をクリックします。

001.png

4.Time IFタグが現れるのでクリックします。

001.png

5.追加をクリックします。

001.png

6.Time IFタグが追加されました。

001.png

使い方

main_s.png

  1. Time IFタグに「先に入力された値を出力」と「後に入力された値を出力」の2種類の設定があります。A7.png
  2. 「同時入力の待ち時間(秒)」には、同時入力時の待ち時間を半角で入力してください。基本、2個の同時入力としておりますが、1個しか入力されなかった場合、指定時間後まで待って出力します。