Raycast not hitting my object,Raycast is not hitting what I click
This is for 3D. My Raycast does not hit the Player object when I click over it. The raycast debug line is flying all over the screen, and it only draws once. Re clicking doesn't redraw. I purposely compensated and clicked on empty space to click and get the ray through my Player object. Even then, it doesn't count as a hit. The script is attached to an empty object which has no tag if that is relevant.
I have gone through similar answers down here and it looks to be correct. Please advice what I am doing wrong. Added couple of screenshots. Thank you.
This is error thrown:
NullReferenceException: Object reference not set to an instance of an object Player.isPlayerClicked () (at Assets/Player.cs:24) Player.Update () (at Assets/Player.cs:18)
public class Player : MonoBehaviour{
private Ray ray;
private RaycastHit hit;
private void Start(){
if (Camera.main != null) ray = Camera.main.ScreenPointToRay(Input.mousePosition);
else{
Debug.Log("Camera is null"); // this doen't print meaning cam is valid
}
}
private void Update (){
isPlayerClicked();
}
private bool isPlayerClicked(){
if (Input.GetMouseButton(0)){
Debug.DrawRay(ray.origin, ray.direction * 100, Color.green, 100f); // only draws once. Re-clicking does nothing
Debug.Log("mouse clicked " + hit.transform.name); // this is throwing error. hit seems to be invalid.
if (!Physics.Raycast(ray, out hit)) return false;
if (!hit.transform.CompareTag("Player")) return false;
Debug.Log ("Player clicked");
return true;
}
return false;
}
}
Screenshots:
[1]: /storage/temp/126587-player.png
[2]: /storage/temp/126588-cam.png
Your answer
Follow this Question
Related Questions
How Can I Detect Objets on Click with Raycast? 0 Answers
Raycast from camera only working from certain angles 1 Answer
Looking at closest visible object with tag 0 Answers
Raycast hitting air 0 Answers
Raycast from Camera 0 Answers