■この記事でやりたいこと
Unityで作られたゲームの実行内容に応じた任意の値をリアルタイムでNode-REDに送信したい。
■参考記事
●フローにフォームデータをPOST
https://cookbook.nodered.jp/http/post-form-data-to-a-flow>
●HTTPサーバーにフォームを送信(POST)
<>
●今日からはじめるUnity
<>
■結論
Node-RED及びUnityで、以下の作業を行うと実現出来る。
●Node-RED側
「http-in」ノードの、メソッドをPOST、URLに任意の文字列を入力してデプロイする。
●Unity側
以下の2文を送信したいトリガーの箇所に追加する。
(任意の文字列は、Node-RED側のURLで入力した任意の文字列のこと。)
UnityWebRequest www = UnityWebRequest.Post("http://localhost:1880/任意の文字列","送信したい任意の値");
www.SendWebRequest();
■詳細
Node-RED側で、「http in」ノードを配置する。
●「http in」ノードの設定例
・メソッドはPOSTを指定する
・URLに任意の文字列を入力する
Unity側で、ゲームとトリガーを作成する。
今回は、任意のgameObjectへの当たり判定をトリガーとします。
ゲーム性を追加するため、当たり判定発生時に消滅するようにします。
スクリプトに以下のコードを追加します。
private void OnCollisionEnter(Collision collision) {//当たり判定発生時に呼び出されるイベント関数
Destroy(gameObject);//gameobjectの消滅
UnityWebRequest www = UnityWebRequest.Post("http://localhost:1880/unity-test","BREAK!!");// UnityWebRequestの作成
www.SendWebRequest();//作成したUnityWebRequestを使用してhttp POSTを行う。
実行してみる
上記のスクリプトをアタッチしたgameObjectへ当たり判定が発生した時に、
Unity側のgameObjectが消滅して、Node-RED側のデバックコンソールに任意の文字列が表示されます。