0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ZigSimを使ってスマートフォンの側の開発をせずに傾きをUnityで取得する

Last updated at Posted at 2021-10-24

スマートフォンってセンサーの塊っていうけど、実際あんまし使わないですよね

ZigSimとは

アプリ画面

Image from Gyazo

左の画面で送信するセンサー値を選んで、真ん中の画面で実行、右はIPやPortの設定

スマートフォンのセンサー値を取得する方法

  • Webブラウザで開発
    • JavaScriptでWebsocketを使って送り、サーバ側で受け取って、Unityは値を取得しにいく
    • もしくは、JavaScriptから直接Unityに送信する
  • スマートフォン向けアプリを開発する
    • KotlinとかSwiftとかで
    • Flutterとかでクロスプラットフォームで
    • むしろUnityでアプリ開発

ZigSimを使うよさみ

先程出したスマートフォン側の開発が一切いらないこと

やってみる

  1. スマートフォンにZigSimアプリのインストール
  2. Unityプロジェクト(今回試したバージョン:2019.4.18)作成
  3. Unity上でスクリプト作成し、後述のコードをコピペ
  4. GameObjectのCubeを作ってスクリプトを追加、Cubeをアタッチ
  5. Unity側のコードでポート番号(LOCA_LPORT)をZigSimアプリに合わせる(デフォルト50000番だから特に操作しなくてもよい)
  6. PCのIPアドレスを調べてZigSimアプリの設定から編集
  7. アプリでQuaternionにチェックし、スタート
  8. Unityエディター上でスタート

ソースコード

using UnityEngine;
using System.Net.Sockets;
using System.Net;
using System.Text;

public class UDPReceive : MonoBehaviour
{
    [System.Serializable]
    public class ZigSimData
    {
        public Sensordata sensordata;
        public string timestamp;
    }
    [System.Serializable]
    public class Sensordata
    {
        public Quaternion quaternion;
    }

    public GameObject cube;
    public int LOCA_LPORT = 50000;

    private UdpClient udp;

    private readonly string testText = "{  \"device\": {    \"name\": \"unknown device (iPhone10,1)\",    \"displayheight\": 1334,    \"uuid\": \"zbmjCQARSd9oFVJ8\",    \"os\": \"ios\",    \"osversion\": \"14.7.1\",    \"displaywidth\": 750  },  \"timestamp\": \"2021_10_21_10:43:24.409\",  \"sensordata\": {    \"gyro\": {      \"y\": -0.29756850004196167,      \"x\": -0.014113557524979115,      \"z\": -0.27333009243011475    }}}";
    
    void Start()
    {
        udp = new UdpClient(LOCA_LPORT);
    }

    void Update()
    {
        IPEndPoint remoteEP = null;
        byte[] data = udp.Receive(ref remoteEP);
        string text = Encoding.ASCII.GetString(data);
        //Debug.Log(text);

        ZigSimData zigSimData = JsonUtility.FromJson<ZigSimData>(text);
        Debug.Log(zigSimData.sensordata.quaternion);
        cube.transform.rotation = zigSimData.sensordata.quaternion;
    }
}


所感

すごく簡単だった

スマートフォン側のコードはJavaScriptとかでは一応簡単だと思うけども、まったく書かないってなるのは全然印象が違うと感じました!いい感じ!

似たようなアプリで tramontana というのもあるので要チェックやで

OscJack も気になる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?