Raycast causa erro NullReferenceException

Código que gera um erro:

void Update() { if (Input.touchCount > 0) { RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position), Vector2.zero); if (hit && hit.collider != null && hit.collider.name == "leftTapArea") { hit.transform.name = "Hit"; } } } 

Diz que algo está errado com esta string:

RaycastHit2D = Physics2D.Raycast (Camera.main.ScreenToWorldPoint (Input.GetTouch (0) .position), Vector2.zero);

Erro:

NullReferenceException: Referência de object não definida para uma instância de um object leftScript.Update () (em Assets / leftScript.cs: 16)

A única coisa que pode retornar null em seu código é Camera.main.ScreenToWorldPoint . Isso significa que Camera.main é null . Para Camera.main a ser inicializado, a câmera deve ter a tag MainCamera .

Selecione o Camera GameObject e depois mude o tag para MainCamera.

insira a descrição da imagem aqui

Se você não quer que sua câmera esteja na tag MainCamera, você também pode encontrar inteligência diretamente com GameObject.Find então pegue o componente Camera dela.

 Camera cam; void Start() { cam = GameObject.Find("NameOfCameraGameObject").GetComponent(); } void Update() { if (Input.touchCount > 0) { RaycastHit2D hit = Physics2D.Raycast(cam.ScreenToWorldPoint(Input.GetTouch(0).position), Vector2.zero); if (hit && hit.collider != null && hit.collider.name == "leftTapArea") { hit.transform.name = "Hit"; } } } 

Certifique-se de ter em sua cena um object de jogo ativo com o componente Camera e a tag “MainCamera”

Tag