- Home /
android touch not detected.
Hi
I am trying to do the basic minimal app. I want to talk to the android touch pad.
I created a new project. My scene has a camera, a GUIText, and a script pinned to the camera.
The game plan is simple. When i use the keyboard arrow keys or the android trackball joystick thingy, the GUIText displays the settings in realtime. This works as expected both on the preview and when i build and deploy to the android.
But when i touch the screen on the android, the guitext stops displaying the framecount as if that routine in not fireing. When i stop touching the touchscreen, the program resumes and the framecount GUIText continues. So what am i doing wrong?
The script is here:
using UnityEngine;
using System.Collections;
public class MainLoop : MonoBehaviour {
public GUIText GT;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
GT.text = Time.frameCount.ToString() + "\n" +
Check_Axis() + Check_Touch();
}
string Check_Axis()
{
string ans="";
ans = "Horizontal=" + Input.GetAxis("Horizontal").ToString();
ans += "\nVertical=" + Input.GetAxis("Vertical").ToString();
return ans;
}
string Check_Touch()
{
string ans = "";
int Count = Input.touchCount;
ans = "\nCount=" + Count.ToString();
for (int i = 1; i <= Count; i++)
{
ans += "\nPosx= " + Input.GetTouch(i).position.x.ToString();
ans += "\nPosy= " + Input.GetTouch(i).position.y.ToString();
ans += "\ndPosx= " + Input.GetTouch(i).deltaPosition.x.ToString();
ans += "\ndPosy= " + Input.GetTouch(i).deltaPosition.y.ToString();
ans += "\nPhase= " + Input.GetTouch(i).phase.ToString();
}
return ans;
}
}
Answer by yatayata · Feb 20, 2012 at 08:12 PM
did you check logcat to see if your code has some other problem? code below is working for me... also handles if using mouse or touch device, which makes development a bit quicker...
using UnityEngine;
using System.Collections;
public class Picker : MonoBehaviour {
Transform marker;
Marker markerObj;
Overlay overlay;
// Use this for initialization
void Start ()
{
marker = GameObject.Find ("marker").transform;
markerObj = marker.GetComponent<Marker>();
overlay = markerObj.overlay;
overlay.AddMsg("startup");
}
// Update is called once per frame
void Update ()
{
int fingerCount = 0;
foreach (Touch touch in Input.touches) {
if (touch.phase != TouchPhase.Ended && touch.phase != TouchPhase.Canceled)
fingerCount++;
Ray ray = Camera.main.ScreenPointToRay(touch.position);
HandleTouch(ray);
}
if (fingerCount > 0)
Debug.Log("fingerCount: " + fingerCount);
}
void HandleTouch(Ray ray) {
RaycastHit hit;
if (Physics.Raycast (ray, out hit)) {
Vector3 hitpos = new Vector3(Mathf.Round(hit.point.x), Mathf.Round(hit.point.y), Mathf.Round(hit.point.z));
markerObj.MoveTo(hitpos);
}
}
void OnMouseDown ()
{
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
HandleTouch(ray);
// object.transform.position = Camera.main.ScreenToWorldPoint (new Vector3 (touch.position.x, touch.position.y, cameraTransform.z - 0.5));
}
}
Your answer
Follow this Question
Related Questions
Touchscreen controller for airplane game 0 Answers
SmoothDamp touch look iOS Android 1 Answer
How to make Headbobber on joystick Android 2 Answers
Detect if finger lifted off screen 1 Answer
Dragging Camera based on Touch 0 Answers