ペン、タブレット、タッチペンのサポート
ペンのサポートは、デスクトップ上のタブレット (Wacom が製造している各種のタブレットなど) のサポートと、モバイルデバイス上のタッチペン (Samsung Note のタッチペン、iOS 上の Apple Pencil、Microsoft Surface ノートブックシリーズの Surface ペンなど) のサポートから成ります。
ペンは一般に、筆圧感知と範囲内検出 (タブレット/画面サーフェスにタッチする前にカーソルを制御できる機能) に対応し、多くの場合は、ペン先の反対側を消しゴムのように使用できます。
ペンは、Pen
クラスに実装されている Pen
Device レイアウトによって表されます。ペンは、Pointer
レイアウトに基づいています。
最後に使用されたペン、または最後に加えられたペンを照会するには、Pen.current
を使用します。
ノート:
- ペン/タブレットのサポートは、現在、Windows、UWP、iOS、Android で実装されています。macOS は Unity 2020.1 以降でサポートされます。
- デバイスによっては、複数のペンを別々に追跡できるものがあります。これは現在、Unity の Input System ではサポートされていません。
- iOS: 現時点では、Apple Pencil の側面をダブルタップするインタラクションは入力として認識されません。また、範囲内検出はサポートされず、
inRange
はデフォルト値のままです。
コントロール
Pen Device には、Pointer
から継承された Control に加えて、以下の Control が実装されています。
Control | 型 | 説明 |
---|---|---|
tip |
ButtonControl |
ペン先がサーフェスに接触しているかどうか。継承された Pointer.press と同じです。 |
eraser |
ButtonControl |
消しゴム/ペン先の反対側がサーフェスに接触しているかどうか。 |
firstBarrelButton |
ButtonControl |
ペンの 1 番目のバレルボタンが押されているかどうか。 |
secondBarrelButton |
ButtonControl |
ペンの 2 番目のバレルボタンが押されているかどうか。 |
thirdBarrelButton |
ButtonControl |
ペンの 3 番目のバレルボタンが押されているかどうか。 |
fourthBarrelButton |
ButtonControl |
ペンの 4 番目のバレルボタンが押されているかどうか。 |
inRange |
ButtonControl |
ペンが現在、タブレットの検出範囲内にあるかどうか。サポートされない場合は、このコントロールの値が 1 のままです。 |
tilt |
Vector2Control |
サーフェスに対する相対的なペンの傾き。 |
twist |
AxisControl |
ペン自体の軸を中心としたペンの回転。Wacom アートペンなど、一部のペンでのみサポートされます。 |
筆圧、傾き、回転
Pressure: ペンの現在の筆圧 (pressure) には、Pen.pressure
を介してアクセスできます。0 は、筆圧がかかっていないことを示し、1 は最大筆圧を示します。ただし、カスタム筆圧カーブが適用されており、ハードウェアがサポートする最大筆圧でペンを押さなくても筆圧値 1 に達する場合は、筆圧が 1 を超えることがあります。複数の筆圧レベルがペンでサポートされていない場合は、pressure
Control により常に 1 が返されます。
Tilt: サポートされる場合、Pen.tilt
Control は、タブレットまたは画面サーフェスに対するペンの傾きの角度を表します。X 軸と Y 軸は、画面のそれぞれの軸に対応します。一方の軸の値が 1 の場合は、タブレットまたは画面サーフェスのその軸にペンが完全に並行であることを示します。値が 0 の場合は、タブレットまたは画面サーフェスのその軸にペンが垂直であることを示します。傾きの角度がペンでサポートされていない場合は、Pen.tilt
により常に (0,0)
が返されます。
Twist: ペンによっては、回転 (ペン自体の軸を中心としたペンの回転) の検出もサポートされることがあります。サポートされる場合、Pen.twist
は、現在の回転を表します。0 は、ペンの正面が Y 軸に面していることを示し、値が 1 に近付くほど、ペンが自身の軸を中心として右回りに大きく回転していることを示します。
範囲内検出
タブレットまたは画面サーフェスにペンが接触することなく、ペンでカーソルを制御できる場合があります。inRange
ボタン Control を使用すると、ペンが現在、検出範囲内にあるかどうかを判別できます。押されていることが inRange
で報告される場合は、タブレットまたは画面でペンが検出されています。この機能をサポートしていない Device では、常に inRange
で、押された状態として報告されます。
バレルボタン
Pen Device には、多くの場合、ペンの側面に 1 つ以上のボタンが付いています。これらが使用可能な場合は firstBarrelButton
、secondBarrelButton
、thirdBarrelButton
、fourthBarrelButton
で表されます。