Touch Screen InputDown() Detection Problems

We’re working on a project that requires some precise input detection via a Windows 7 touch screen. However, there seems to be some issues with Unity detecting when the initial touch event occurs. We’ve also worked on this functionality with a mouse but here is the important difference:

Mouse - When the mouse button is clicked, Unity immediately detects it and GetMouseButtonDown(0) returns true. We then start tracking the Move and eventually Up events.

Touch Screen The user touches the screen. However, GetMouseButtonDown(0) does NOT return true unless:

  1. The user holds their finger on the screen for about 5 seconds.
  2. The user lifts their finger.
  3. The user moves their finger a ways on the screen

This is fine for normal things like dragging objects around in the game, however we’re trying to detect very fast swipes to get a wheel spinning (think Showcase Showdown on “Price is Right”). The fact that we’re not getting the initial down event (and subsequent move/up events) until some time has passed is throwing all our control off and the game seems unresponsive. Is there a way to get Unity to detect the initial touch the instant/frame the user touches the screen? Or alternatively are there any plans for supporting touch screens with the iPhone/Android Input.touches functionality? I’ve looked into GetAxis(), but unfortunately that works with mouse only and doesn’t do anything with the touch screen.

Any help would be greatly appreciated.

Thank you

I fixed this issue by turning off “Press and Hold for Right Click”. I no longer have to roll my finger a bit or wait for several seconds. It also responds to the initial touch immediately if priority was in a separate window.

If you need right click it looks like adding a listener for TouchEvent.TOUCH_BEGIN to the target you want to receive MouseEvent.MOUSE_DOWN should work.