Raycasting is running in two different objects with the same Tag when I touch just one of them
Hi guys.
I'm pretty sure this is a silly question, but I've been squeezing my brain all day without results.
I have two objects in my 3D scene with the same tag ("Pin"). They're two simple spheres and everyone has the next .cs component:
public class Pin : MonoBehaviour {
[SerializeField]
private string sceneRelated;
// Update is called once per frame
void Update ()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
if (hit.collider.gameObject.tag == "Pin")
{
Debug.Log ("You hit a Pin SceneRelated: " + sceneRelated);
}
}
}
}
}
Now, when I touch one of the spheres, both of them run the event although they are in different positions.
I really appreciate any suggestions.
Answer by tonOnWu · Mar 02, 2018 at 01:05 AM
Oh my god. It's bad to be exhausted. As I thought the answer was very simple. My first error was that I locate the Raycast analysis component inside Pin and that component was assigned to every Sphere. The Pin component should not made the Raycast analysis. So I removed all the Raycasts from the Pin component and create a new object (just one) to make the Pin Analysis. This new object include this component:
public class RaycastOnObjects : MonoBehaviour {
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown(0))
{
// Debug.Log ("You're touching: " + sceneRelated);
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
if (hit.collider.gameObject.tag == "Pin")
{
Pin pinObject = hit.collider.gameObject.GetComponent<Pin> ();
if (pinObject != null)
{
Debug.Log ("You hit the object for Scene: " + pinObject.sceneRelated);
}
Debug.Log ("You hit a Pin FROM RAYCASTING ");
}
}
}
}
}
And, final version of the Pin component was like this:
public class Pin : MonoBehaviour {
public string sceneRelated;
// Update is called once per frame
void Update ()
{
}
}
Which is basically nothing because all the logic is made inside RaycastOnObjects.
Your answer
Follow this Question
Related Questions
Cursor not staying centered to gameobject 0 Answers
Raycast Not Detecting Hit 0 Answers
How to actually make raycast hit colliders it s starting from? 1 Answer
Multiple raycasts and only two are working 0 Answers
Ignore Raycast not working properly? 0 Answers