# スマホ機能のまとめ

## 新入力システム（Input System）

### タッチ・マルチタッチ

#### 有効化・無効化

```c#
using UnityEngine.InputSystem.EnhancedTouch;

// 有効化
EnhancedTouchSupport.Enable()

// 無効化
EnhancedTouchSupport.Disable()
```

#### 各タッチのイベント

![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/zPgimage.png)

```c#
using Touch = UnityEngine.InputSystem.EnhancedTouch.Touch; 

// 画面を触れ始めたとき
Touch.onFingerDown += 処理メソッド;

// 指は移動中のとき
Touch.onFingerMove += 処理メソッド;

// 指が画面から放したとき
Touch.onFingerUp += 処理メソッド;
```

#### イベントを受け取るメソッド

```c#
// finger: 指のデータ
void 処理メソッド(Finger finger)
{
    // イベントを処理
}
```

#### タッチの全体状態

```c#
// 現在画面を触れている指の本数（int型）
Touch.activeTouches;

// 現在画面を触れている指のデータ（Finger配列型）
Touch.activeFingers;
```

#### 指のデータ（Finger）

```c#
// タッチした画面の位置（Vector2型）
finger.screenPosition

// タッチした指の順番（int型）
// 0 = 1本目
// 1 = 2本目
// 2 = 3本目 
// …
// 9 = 10本目
finger.index
```

### 加速度センサー、スマホの傾き

#### 有効化・無効化

```c#
using UnityEngine.InputSystem;

// 使えるか？
bool canUse = Accelerometer.current != null;

// 有効化
InputSystem.EnableDevice(Accelerometer.current);

// 無効化
InputSystem.DisableDevice(Accelerometer.current);
```

#### 位置を求める

```c#
// 加速度の値（3次元ベクトル）
Vector3 value = Accelerometer.current.acceleration.ReadValue();
```

![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/RL1image.png)

加速度センサーの座標系

## 旧入力マネージャー（Input Manager）

以下の機能は「旧入力マネージャー」を使用する機能であるため、「プレーヤー設定」でアクティブな入力を適切に設定しなければならない。

![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/nNNimage.png)

### コンパス、方位

#### 有効化・無効化

```c#
// 有効化
Input.compass.enabled = true;

// 無効化
Input.compass.enabled = false;
```

#### 向きを求める

```c#
// 方位（0度～360度の実数）
float value = Input.compass.trueHeading;
```

`trueHeading`は度単位で表す方位である：

![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/AfDimage.png)

### GPSの位置（緯度経度）

#### 有効化・無効化

```c#
// 有効化
Input.location.Start();

// 無効化
Input.location.Stop();
```

#### 位置を求める

```c#
// 位置情報
LocationInfo position = Input.location.lastData;
float lat = position.latitude;  // 緯度
float lon = position.longitude; // 経度
```