Why my ray doesn't hit the collider?
It's a 2D very simple clicker game that adds items to a collection and when there's more than 4 items in the collection it'll perform an action (displaying a Game Object with a sprite attached to it). So the game object get's created (initialized) properly, it's displayed and gives the user an information on the outcome of his/her selection. But... I somehow aren't able to destory this object by clicking on a specific region in this GameObject (sprite) and restarting the game. Here's the code with comments, please help.
 using UnityEngine;
 using System.Collections;
 using System.Collections.Generic;
 
 public class CamerScript : MonoBehaviour {
 
 public List<string> stomach;
 RaycastHit hit;
 public Rigidbody shitRB;
 public bool stomachFull = false;
 private bool GoOn = true;
 
 private void Start () {
     stomach = new List<string>();
 }
 
 private void Update()
 {
     if (GoOn)
     {
         if (stomachFull == false)
         {            
             if (stomach.Count >= 4) stomachFull = true;
             if (Input.GetMouseButtonDown(0))
             {
                 click();
             }
         }
         if (stomachFull)
         {
             // This does get accessed and executed.. the object get displayed
             Debug.Log("stomach more than 4  " + stomach.Count);
             GoOn = false;
             Rigidbody shitClone = (Rigidbody)Instantiate(shitRB, transform.position, transform.rotation); 
         }
     }
 
     if(GoOn == false)
      //   THE PROBLEM IS BELOW!!!!!
     {
         if (Input.GetMouseButtonDown(0))
         {
             Debug.Log("Clicked mouse button 0");      
             // The above DOES get displayed in the console
             Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
             if (Physics.Raycast(ray, out hit, 100f))  
 
             {
                 // THIS --IF-- is never executed.
                 // so there has to be something wrong with the 'if' above
                 Debug.Log("Clicked on the shit cross button");
                 stomach.Clear();
                 stomachFull = false;
                 GoOn = true;
             }
         }
     }
 }
 
 void click()
 {
     Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
     if (Physics.Raycast(ray, out hit, 100f))
     {
         stomach.Add(hit.collider.name);
         // This DOES work, the items are being addaed to the array (List)
     }
 }
 
               
Generally I cannot understand why my ray does not hit the colider and thus my code isn't executed (the GO doesn't get destroyed).
Any help appreciated.
Will this ever be moderated? $$anonymous$$y last question awaits moderation since June 29th. ;/
Answer by OctoMan · Sep 28, 2016 at 12:53 PM
 if ( Input.GetMouseButtonDown(0))
         {
             ray = Camera.main.ScreenPointToRay(Input.mousePosition);
             if(Physics.Raycast(ray, out hit))
             {
                 if(hit.transform.tag == "PIG")//ask for a collision tag and see if you get the dubug line
                    {
                     Debug.Log("You hitted the PIG");
                    }
             }
         }
 
               Is GoOn ever false?
Your answer
 
             Follow this Question
Related Questions
Hi everyone! The event of touching the display of phone doesn't work sometimes. 0 Answers
Raycast not detecting? 0 Answers
Raycast + Collider + Mouse 0 Answers
Do touch on point where ray hits 0 Answers
Adding points for every gameObject on the scene instead of adding points for the destroyed one 0 Answers