- Home /
NullReferenceException in Camera.main.ScreenPointToRay
Hello.My name is Saulo and I'm having an issue with unity 5. In my project,I'm trying to make an click-to-move game.Therefore,I was trying to create a ray with ScreenPointToRay.But sadly,when I run the game the console notifies me "Object reference not set to an instance of an object". NOTE that I have already searched it on google and found some answers here at the forum and I know that this might happen when my project do not have a camera at all or the tag on it is not "MainCamera".But I checked it and my main camera IS tagged as "MainCamera" but I still got the error.
using UnityEngine; using System.Collections;
public class Player : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown (0) && !UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject ()) {
GetInteraction ();
}
}
void GetInteraction(){
Ray interactionRay = Camera.main.ScreenPointToRay (Input.mousePosition);
}
}
Thank You.
Just fyi this shouldn't have made it through moderation. NullReferenceException questions are forbidden by the $$anonymous$$oderator Guidelines. Also didn't format your code. And you attempted to comment using an answer, watch out for that distinction.
I'll admit at first glance it looks like nothing's wrong with that line. I'm not clear on why this isn't working. Try creating a public variable whose type is Camera, then assign the camera to it. If anyone else wants to chime in given what the OP stated they tried, that'd be helpful.
At which line you are getting exception? $$anonymous$$aybe you don't have event system in your scene.
Answer by RetroZelda · Dec 07, 2016 at 05:44 AM
I've always had bad luck with Camera.main. try this:
using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour
{
private Camera _Camera;
// Use this for initialization
void Start()
{
_Camera = FindObjectOfType<Camera>();
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0) && !UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
{
GetInteraction();
}
}
void GetInteraction()
{
Ray interactionRay = _Camera.ScreenPointToRay(Input.mousePosition);
}
}
Your answer
Follow this Question
Related Questions
NullReferenceException in Camera.main.ScreenPointToRay 1 Answer
Why won't my Ray initialization work?? 2 Answers
Ray Travels Incredibly Short Distance -- Unity 5.5.0f3 -- Windows 8.1 -- Solved Sort-of 1 Answer
Anyone Else wanna take a wack at the question ? Need help fixing a script error... 5 Answers
Object reference not set to an instance of an object? 1 Answer