Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Clone this wiki locally
TouchScript — multi-touch library for Unity
When working on a project for mobile devices or PCs with touch input you will soon require basic gestures like tap, pan, pinch and zoom — they are not hard to implement manually using Unity API or using a package from Asset Store. The hard part is to make these gestures work together, e.g. to have a button with a tap gesture placed on a zoomable window. This is where you will need TouchScript — it makes handling complex gesture interactions on any touch surface an effortless job.
- TouchScript abstracts touch and gesture logic from input methods and platforms. Your touch-related code will be the same everywhere.
- TouchScript supports many touch input methods starting from smartphones to giant touch surfaces: mouse, Windows 7/8 touch, mobile (iOS, Android, Windows Store/Windows Phone), TUIO.
- TouchScript includes common gesture implementations: press, release, tap, long press, flick, pinch/scale/rotate.
- TouchScript allows you to write your own gestures and custom pointer input logic.
- TouchScript manages gestures in transform hierarchy and makes sure that the most relevant gesture will receive touch input.
- TouchScript comes with many examples and is extensively documented.
- TouchScript makes it easy to test multi-touch gestures without an actual multi-touch device using built-in second touch simulator (activated with Alt + click), TUIOPad on iOS or TUIODroid on Android. Read more.
- It's free and open-source. Licensed under MIT license.
Developed by Valentin Simonov.
Downloading the package
To use TouchScript in your project you either need to
- download the latest release from Github,
- or get it from Asset Store,
- or clone the repository and use the source (more info on how to do it).
Your first TouchScript project
To test how TouchScript works, create an empty scene and drag two prefabs from
TouchScript/Prefabs folder to the scene:
Cursors. Press Play and click or touch (if your PC supports touch input) the Game View — you will see colored circles, pointer cursors.
Note: to simulate a second pointer you can hold Alt and click anywhere within the Game View.
You can make any GameObject react to touch input — just attach one of the scripts called Gestures to it. TouchScript ships with a few built-in Gestures which you can find in
Component/TouchScript/Gestures menu. It is also possible to write your own gestures.
To test how built-in Gestures work, create an empty cube in the scene and attach a
TransformGesture to it either from
Component menu or
Add Component button. Make the cube large enough to be able to touch it with two fingers. Attach another component called
Transformer to the cube — this component listens to events from
TransformGesture and applies translation, rotation and scaling to the GameObject.
Press Play. Note how you can drag the object with one touch and scale or rotate it with two touches. Don't forget that you can use Alt + click to simulate a second pointer (read more more about testing multi-touch gestures).
TouchScript comes with many examples in
TouchScript/Examples folder. Open
Examples.unity scene and read description for every example to find out what it is about.
What to read next
- How to receive a pointer.
- What is a Gesture and how to work with it.
- What is an Input Source and why it is needed.
- What is a Layer and why it is needed.
- Some info on how TouchScript works internally.
- How to affect which objects can be touched.
- How to change touch coordinates from an input device.
- How to write a custom Gesture.
- How you can help.
If you have a problem using TouchScript or running examples please check the FAQ before submitting issues.
Some of the questions have been already asked multiple times. Check if yours is in the list.
Complete up-to-date generated docs with all public API annotated.
Want to ask a question about TouchScript? Use the official Forum.
Found a bug? Got a feature request? Feel free to post it in Issues.