- Home /
All objects response to one touch
Hi !
I have some objects which are going to be menu items, so I made them touchable. The problem is, when I touch one of them, all of them respond they were touched.
I paste the code:
bool IsTouched() { int touchNumber = 0; bool touched = false; RaycastHit hit = new RaycastHit(); Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit)) {
//print("mouse hit:" + hit.point.ToString());
//selection.transform.Translate(hit.point - selection.transform.position);
touched = true;
}
if (Input.touchCount > 0)
{
touched = false;
Ray rayios = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
foreach (Touch t in Input.touches)
{
rayios = Camera.main.ScreenPointToRay(t.position);
Debug.Log("checking touch " + touchNumber);
if(Physics.Raycast(rayios, out hit))
{
Debug.Log("touch number "+touchNumber+" HIT!!!");
touched = true;
}
touchNumber++;
}
if (Physics.Raycast(rayios, out hit)) {
//print("touch hit:" + hit.point.ToString());
//selection.transform.Translate(hit.point - selection.transform.position);
touched = true;
}
}
return touched;
}
I do all the work on Mac and iOS. This script is attached to prefab for all my menuitems, but only touched instance should respond. What am I doing wrong?
if(Physics.Raycast(rayios, out hit))
This should give a positive value only when particular instance is touched. Or maybe I am wrong, am I?
Answer by Henrique Vilela · May 05, 2011 at 01:23 PM
Physics.Raycast will return TRUE if there is any object on the ray. You need to check if the returned object is your actual object, like this:
if (Physics.Raycast(ray, out hit)) {
if (hit.collider.gameObject == gameObject)
// Touched
}
}
I just managed it in a way like this: if (this.collider.Raycast(ray, out hit, 10000)) but yours look nicer
Your answer
Follow this Question
Related Questions
Touches don't respond correct 2 Answers
I want to destroy the top object from a stack of objects on touch, not all objects. 1 Answer
Multitouch problem in Unity iPhone 2 Answers
Develop a game in team, do we have to buy unity iphone everyone? 1 Answer
translating a touchDeltaPosition from the y axis to z axis 1 Answer