unity tutoriales tutorial kit game espaƱol costo c# unity3d unity5 unity3d-2dtools

c# - tutoriales - unity 5 costo



Camera.main es nulo al realizar raycast (2)

Asegúrese de tener en su escena un objeto de juego activo con el componente Camera y la etiqueta "MainCamera"

Código que genera un error:

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"; } } }

Dice que algo está mal con esta cadena:

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

Error:

NullReferenceException: referencia de objeto no establecida en una instancia de un objeto leftScript.Update () (en Assets / leftScript.cs: 16)


Lo único que puede devolver nulo en su código es Camera.main.ScreenToWorldPoint . Significa que Camera.main es null . Para que Camera.main se inicialice, la cámara debe tener la etiqueta MainCamera .

Seleccione Camera GameObject y luego cambie la etiqueta a MainCamera.

Si no desea que su cámara esté en la etiqueta MainCamera, también puede encontrar el ingenio directamente con GameObject.Find y obtenga el componente Camera .

Camera cam; void Start() { cam = GameObject.Find("NameOfCameraGameObject").GetComponent<Camera>(); } 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"; } } }