ブラウザー入力処理
Unity Render Streaming は、ブラウザからのユーザー入力をサポートしています。ブラウザ上での操作をあたかも Unity 上で操作しているかのように再現できます。
入力デバイス
ブラウザーからの入力は以下のデバイスをサポートしています。同時に複数のデバイスを利用することが可能です。
- マウス
- キーボード
- タッチ
- ゲームパッド
データフォーマット
キーボードイベント
index | value | size |
---|---|---|
0 | 0 | 1 |
1 | key code | 1 |
マウスイベント
index | value | size |
---|---|---|
0 | 1 | 1 |
1 | position x | 2 |
3 | position y | 2 |
5 | button | 1 |
マウスホイールイベント
index | value | size |
---|---|---|
0 | 2 | 1 |
1 | scroll x | 2 |
3 | scroll y | 2 |
タッチイベント
タッチイベントは検出された指の本数に応じてデータサイズが可変になります。 1バイト目の length
の値が検出された指の本数になります。
index | value | size |
---|---|---|
0 | 3 | 1 |
1 | length | 1 |
2 | phase | 1 |
3 | position x | 2 |
5 | position y | 2 |
7 | force | 4 |
ゲームパッドイベント
ゲームパッドのイベントは4種類あり、種類によってデータフォーマットが異なります。
event name | value |
---|---|
button down | 0 |
button up | 1 |
button pressed | 2 |
axis | 3 |
button down
、 button up
、 button pressed
の場合は以下。
index | value | size |
---|---|---|
0 | 5 | 1 |
1 | event type | 1 |
2 | button index | 1 |
3 | value | 8 |
axis
の場合は以下。
index | value | size |
---|---|---|
0 | 5 | 1 |
1 | event type | 1 |
2 | button index | 1 |
3 | axis x | 8 |
11 | axis y | 8 |
マルチユーザー
複数ユーザーの入力を制御するために RemoteInputReceiver
クラスが利用できます。 RemoteInputReceiver.Create
を呼び出して、 RemoteInput
のインスタンスを作成します。次に RTCDataChannel
から受け取ったメッセージを RemoteInput.ProcessInput
メソッドに受け渡します。
// RemoteInput のインスタンスを作成
RemoteInput input = RemoteInputReceiver.Create();
channel.OnMessage = bytes => input.ProcessInput(bytes);
RemoteInput
のインスタンスから入力デバイスを取得して、デバイスの値を参照することで入力を制御することができます。例えばキーボード入力は以下のように記述します。
// キーボードのデバイスを取得して、w キー押下時に処理
Keyboard keyboard = input.RemoteKeyboard;
if(keyboard.wKey.isPressed)
{
// ...
}