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