Structure describing the status of a finger touching the screen.
Devices can track several pieces of data about a touch on a touchscreen, including its phase of the touch lifecycle, its position, and whether the touch was a single contact or several taps. Furthermore, the device can detect the continuity of a touch between frame updates, so a consistent ID number can be reported across frames and used to determine how a particular finger is moving.
The touch lifecycle describes the state of a touch in any given frame:
Unity uses the Touch struct to store data relating to a single touch instance. The struct is returned by the Input.GetTouch function. Fresh calls to GetTouch are required on each frame update to obtain the latest touch information from the device but the Touch.fingerId property can be used to identify the same touch between frames.
Note: On iOS devices, any Touch information being held in memory (for example, when you are part-way through the touch lifecycle) is lost if the application is minimized. This happens because iOS calls ResetTouch() and wipes all touch data from memory. The lifecycle of that touch ends there and any functionality that relies on later phases of the touch lifecycle isn't executed. If you experience this problem, you should move the functionality that isn't being executed into OnApplicationFocus or OnApplicationPause.
Additional resources: Input.GetTouch, TouchPhase
| Property | Description |
|---|---|
| altitudeAngle | Value of 0 radians indicates that the stylus is parallel to the surface, pi/2 indicates that it is perpendicular. |
| azimuthAngle | Value of 0 radians indicates that the stylus is pointed along the x-axis of the device. |
| deltaPosition | The position delta since last change in pixel coordinates. |
| deltaTime | Amount of time that has passed since the last recorded change in Touch values. |
| fingerId | The unique index for the touch. |
| maximumPossiblePressure | The maximum possible pressure value for a platform. If Input.touchPressureSupported returns false, the value of this property will always be 1.0f. |
| phase | Describes the phase of the touch. |
| position | The position of the touch in screen space pixel coordinates. |
| pressure | The current amount of pressure being applied to a touch. 1.0f is considered to be the pressure of an average touch. If Input.touchPressureSupported returns false, the value of this property will always be 1.0f. |
| radius | An estimated value of the radius of a touch. Add radiusVariance to get the maximum touch size, subtract it to get the minimum touch size. |
| radiusVariance | This value determines the accuracy of the touch radius. Add this value to the radius to get the maximum touch size, subtract it to get the minimum touch size. |
| rawPosition | The first position of the touch contact in screen space pixel coordinates. |
| tapCount | Number of taps. |
| type | A value that indicates whether a touch was of Direct, Indirect (or remote), or Stylus type. |