[RESOLU] NullReferenceException: Object reference not set to an instance of an object

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
flyingbibi
Messages : 10
Inscription : 29 Avr 2020 20:10

[RESOLU] NullReferenceException: Object reference not set to an instance of an object

Message par flyingbibi » 29 Avr 2020 20:33

Bonjour à tous,
je rencontre un problème avec mon jeu et je ne sais pas si ça vient de mon code ( qui a l'air bon pourtant) ou d'une erreur dans unity.
Voici mon code :

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Weapon : MonoBehaviour
{
    private void Update() {
        Vector2 direction = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
        float angle = Mathf.Atan2(direction.y,direction.x) * Mathf.Rad2Deg;
        Quaternion rotation = Quaternion.AngleAxis(angle, Vector3.forward);
        transform.rotation = rotation;
    }
}
et voici ce que j'ai mis sur unity en pièce jointe.

L'erreur que je rencontre est :
NullReferenceException: Object reference not set to an instance of an object Weapon.Update () (at Assets/scripts/Weapon.cs:8)


Je ne vois pas du tout où est le problème... quelqu'un pour m'aider?

Merci!!!
Pièces jointes
capture.jpg
Capture de mon écran avec unity
capture.jpg (369.21 Kio) Consulté 3919 fois

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: Problem : NullReferenceException: Object reference not set to an instance of an object

Message par Max » 29 Avr 2020 20:54

Bonsoir,

ta camera possède bien le tag "MainCamera" ?
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ


flyingbibi
Messages : 10
Inscription : 29 Avr 2020 20:10

Re: Problem : NullReferenceException: Object reference not set to an instance of an object

Message par flyingbibi » 29 Avr 2020 21:02

Voilà une capture où on voit que la camera a bien le bon tag.
Pièces jointes
capture2.jpg
capture2.jpg (282.45 Kio) Consulté 3905 fois


flyingbibi
Messages : 10
Inscription : 29 Avr 2020 20:10

Re: Problem : NullReferenceException: Object reference not set to an instance of an object

Message par flyingbibi » 29 Avr 2020 21:37

Bon je n'ai plus d'erreur, c'était bien du à la caméra, par contre la torche ne suit toujours pas la direction de la souris. Ce qu'elle devrait faire normalement non ?

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: Problem : NullReferenceException: Object reference not set to an instance of an object

Message par Max » 29 Avr 2020 21:51

Attention dans l'utilisation de ScreenToWorldPoint.
Comme le spécifie la doc, en entrée en plus de la position de ta souris (qui ne verra affecté que les composantes x et y), tu dois avoir un paramètre z position for depth (for example, a camera clipping plane).
Là, à priori à zéro cela te retournera une valeur probablement fixe dans direction.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

flyingbibi
Messages : 10
Inscription : 29 Avr 2020 20:10

Re: Problem : NullReferenceException: Object reference not set to an instance of an object

Message par flyingbibi » 29 Avr 2020 22:06

Merci pour ta réponse :)
Mais comment puis-je faire ?
car dans : ScreenToWorldPoint(Input.mousePosition) si je rajoute une valeur après input.mousePosition ca me met une erreur :(

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: Problem : NullReferenceException: Object reference not set to an instance of an object

Message par Max » 29 Avr 2020 22:18

Aide toi de la doc, dont je t'ai fournis le lien plus haut, ainsi qu'une partie de la réponse.
Max a écrit :
29 Avr 2020 21:51
ScreenToWorldPoint.
... tu dois avoir un paramètre z position for depth (for example, a camera clipping plane).
Ce qui pourrait niveau code ressembler à quelque chose comme:

Code : Tout sélectionner

    Camera cam;

    private void Start()
    {
        cam = Camera.main;
    }

    private void Update()    {
        Vector3 mousepos = Input.mousePosition;
        mousepos.z = cam.nearClipPlane;
        Vector3 direction = Camera.main.ScreenToWorldPoint(mousepos) - transform.position;
      ....
    }

Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
jmhoubre
Messages : 859
Inscription : 05 Oct 2019 22:05

Re: Problem : NullReferenceException: Object reference not set to an instance of an object

Message par jmhoubre » 29 Avr 2020 22:19

Crée un Vector3 avec Input.mousePosition.x, Input.mousePosition.y, et z qui représente la profondeur de ton clipping plane. Puis ScreenToWorldPoint(monVecteur3).

Répondre

Revenir vers « Scripting »