Instancier un prefab au pointeur de souris

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Avatar de l’utilisateur
Yugo
Messages : 24
Inscription : 12 Nov 2018 15:22

Instancier un prefab au pointeur de souris

Message par Yugo » 29 Nov 2018 19:58

Salut
Je vois partout sur le net qu'il faut utiliser ScreenToWorldPoint(Input.mousePosition) mais le script ci-dessous ne fonctionne pas. Il me le met toujours au même endroit qu'importe où je clic sur l'ecran. (en 0 , 1 , 2)

Code : Tout sélectionner

    public GameObject thePrefab;

void Update () 
{
        if (Input.GetMouseButtonDown(0))
        {
            Vector3 wordPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            wordPos.z = 2f;
            Instantiate(thePrefab, wordPos, Quaternion.identity);
        }    
}
Pourquoi ça ne marche pas ?

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Instancier un prefab au pointeur de souris

Message par djulio74 » 29 Nov 2018 20:16

Il me semble sans etre sur que ton world position est calculé avec ScreenToWorldPoint et un vector3 en donnée, hors tu ne lui met qu'un vecteur 2 (mousePosition) puis apres overwrite ton z.
essaye plutot :

Code : Tout sélectionner

 Vector3 wordPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y,2.0f));
C'est sans conviction mais test quand même pour voir

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Avatar de l’utilisateur
Yugo
Messages : 24
Inscription : 12 Nov 2018 15:22

Re: Instancier un prefab au pointeur de souris

Message par Yugo » 29 Nov 2018 20:33

oui ça marche mais je comprends pas trop la différence entre les 2 scripts.

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Instancier un prefab au pointeur de souris

Message par djulio74 » 29 Nov 2018 20:57

le ScreenToWorldPoint sers a calculer un vecteur en fonction de trois input ( Vector3(x,y,z). le z du vector3 de sortie n'est pas égale au z du Vector3 d'entré.
hors toi tu ne donne qu'un vector2(x,y) en entrée , déjà le ScreenToWorldPoint ne doit pas parvenir a donner un bon Vector3 de sortie, et ensuite tu écrase le z du vector3 de sortie, qui de toute façon n'avait rien a voir avec le z du Vector3 en entré.

Je sais pas si je suis bien clair, regadre la doc Unity ce sera peut être plus clair.

Edit :
En fait la fonction ScreenToWorldPoint c'est comme si tu avait un plan, au niveau de la camera, qui recouvrirait tout l'ecran de la camera.
dans ScreenToWorldPoint(Vector3(x,y,z) :
input.mousePosition serait la position de la souris sur ce plan, dans le repère du plan ( donc pas dans le monde). en bas a gauche ( 0,0) et en haut a droite (screen.width, screen.heigt), donc x et y
et z serait la distance du plan par apport a la camera.

la fonction ScreenToWorldPoint transform donc ces 3 coordonnée sans reel reper, en des coordonnée dans le repere World.

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Répondre

Revenir vers « (C#) CSharp »