In unity3D, Click = Touch?

Short answer: yes, touch may be handled with Input.GetMouseButtonDown().

  • Input.GetMouseButtonDown(), Input.mousePosition, and associated functions work as tap on the touch screen (which is kind of odd, but welcome). If you don’t have a multi-touch game, this is a good way to keep the in-editor game functioning well while still keeping touch input for devices. (source: Unity Community)

  • Mouse simulation with touches can be enabled/disabled with Input.simulateMouseWithTouches option. By default, this option is enabled.

  • Though it is good for testing, I believe Input.GetTouch() should be used in production code (because it is able to handle simultaneous touches).

  • Interesting approach is to add touch handling to OnMouseUp()/OnMouseDown() event:

      //  OnTouchDown.cs
      //  Allows "OnMouseDown()" events to work on the iPhone.
      //  Attach to the main camera.
    
      using UnityEngine;
      using System.Collections;
      using System.Collections.Generic;
    
      public class OnTouchDown : MonoBehaviour {
          void Update () {
              // Code for OnMouseDown in the iPhone. Unquote to test.
              RaycastHit hit = new RaycastHit();
              for (int i = 0; i < Input.touchCount; ++i)
                  if (Input.GetTouch(i).phase.Equals(TouchPhase.Began)) {
                      // Construct a ray from the current touch coordinates
                      Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(i).position);
                      if (Physics.Raycast(ray, out hit))
                          hit.transform.gameObject.SendMessage("OnMouseDown");
                  }
          }
      }
    

    (source: Unity Answers)

UPD.: There is Unity Remote mobile app for simulating touching in editor mode (works with Unity Editor 4 and Unity Editor 5).

Leave a Comment