[Abandonné][DB-AL] Positionner objet sur curseur
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
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
[Abandonné][DB-AL] Positionner objet sur curseur
Bonjour,
J'ai conscience que ce sujet a été traité plusieurs fois, j'ai même vu un post sur ce sujet datant de 2010, mais sans obtenir de réponse.
Dans mon jeu, j'ai un inventaire sous forme de UI, dans lequel il y a des items représentant des objets.
Je voudrai, en cliquant sur un item, l'objet en question, vienne se placer à la place du curseur de façon à ce que je puisse le drag&drop où je le souhaite.
Je n'arrive pas à positionner mon objet à la place de mon curseur.
est-ce que quelqu'un peut m'aider svp...
J'ai conscience que ce sujet a été traité plusieurs fois, j'ai même vu un post sur ce sujet datant de 2010, mais sans obtenir de réponse.
Dans mon jeu, j'ai un inventaire sous forme de UI, dans lequel il y a des items représentant des objets.
Je voudrai, en cliquant sur un item, l'objet en question, vienne se placer à la place du curseur de façon à ce que je puisse le drag&drop où je le souhaite.
Je n'arrive pas à positionner mon objet à la place de mon curseur.
est-ce que quelqu'un peut m'aider svp...
Dernière édition par EmileF le 02 Août 2019 18:02, édité 1 fois.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.
- boubouk50
- ModoGenereux
- Messages : 6217
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [DB-AL] Positionner objet sur curseur
Salut Emile,
La documentation: https://docs.unity3d.com/ScriptReferenc ... ition.html
Il te renvoie la position du curseur dans le repère de l'écran: 0,0 en bas a gauche, X,Y en haut à droite, avec X la largeur et Y la hauteur en pixel de l'affichage. (Screen.width et Screen.height)
Pour la suite, il faut savoir comment est géré ton canvas: résolution, repère (screenSpace, width related, constant) pour calculer la bonne position.
je suis tombé sur ce tuto qui fait le taff: https://www.youtube.com/watch?v=fhBJWTO09Lw
La documentation: https://docs.unity3d.com/ScriptReferenc ... ition.html
Il te renvoie la position du curseur dans le repère de l'écran: 0,0 en bas a gauche, X,Y en haut à droite, avec X la largeur et Y la hauteur en pixel de l'affichage. (Screen.width et Screen.height)
Pour la suite, il faut savoir comment est géré ton canvas: résolution, repère (screenSpace, width related, constant) pour calculer la bonne position.
je suis tombé sur ce tuto qui fait le taff: https://www.youtube.com/watch?v=fhBJWTO09Lw
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: [DB-AL] Positionner objet sur curseur
Merci Boubouk,
Ton premier lien me donne comme script:
Je ne vois pas comment récupérer la position du curseur pour placer mon objet.
Dans la vidéo, qui est très bien, il fait déplacer l'item, c'est pas ce que je souhaite
Ce que je voudrais c'est créer l' objet 3D, correspondant à l'item sur lequel je clique, le positionner à l'emplacement du curseur pour pouvoir le déplacer ensuite ou je souhaite.
Et je n'arrive pas à positionner l'objet 3D à l'emplacement du curseur
Si j'utilise:
il me positionne l'objet pile sur la caméra...
Ton premier lien me donne comme script:
Code : Tout sélectionner
void Update ()
{
if ( Input.GetButtonDown ("Fire1"))
{
Ray ray = Camera.main.ScreenPointToRay ( Input.mousePosition );
if ( Physics.Raycast (ray))
Instancier (particule, transform.position, transform.rotation);
}
}
Dans la vidéo, qui est très bien, il fait déplacer l'item, c'est pas ce que je souhaite
Ce que je voudrais c'est créer l' objet 3D, correspondant à l'item sur lequel je clique, le positionner à l'emplacement du curseur pour pouvoir le déplacer ensuite ou je souhaite.
Et je n'arrive pas à positionner l'objet 3D à l'emplacement du curseur
Si j'utilise:
Code : Tout sélectionner
transform.position = Camera.ScreenToWorldPoint(Input.mousePosition);
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.
- boubouk50
- ModoGenereux
- Messages : 6217
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [DB-AL] Positionner objet sur curseur
Pour la doc, ce n'est que pour te la donner.
Pour le contexte, tu parlais d'élément d'UI, mais si c'est un objet 3D, c'est différent effectivement.
Il faut transformer la position du curseur (2D écran) en coordonnées monde (World). Heureusement, Unity le fait pour toi avec les fonctions WorldToScreenPoint ou bien l'inverse ScreenToViewportPoint
Un tuto: https://www.youtube.com/watch?v=0yHBDZHLRbQ
Pour le contexte, tu parlais d'élément d'UI, mais si c'est un objet 3D, c'est différent effectivement.
Il faut transformer la position du curseur (2D écran) en coordonnées monde (World). Heureusement, Unity le fait pour toi avec les fonctions WorldToScreenPoint ou bien l'inverse ScreenToViewportPoint
Un tuto: https://www.youtube.com/watch?v=0yHBDZHLRbQ
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: [DB-AL] Positionner objet sur curseur
Oui bon Boubouk, merci beaucoup, mais le drag and drop, je sais le faire.
Ce que je n'arrive pas à faire c'est positionner mon objet à l'emplacement de ma souris.
Exemple, mon objet n'existe pas.
Je clique sur l'item
Je crée l'objet, à l'emplacement de la souris
et je le déplace.
C'est ce "à l'emplacement de la souris" que je n'arrive pas à faire.
Et comme je te disais précédement le :
me place l'objet sur la caméra.
Je crois comprendre un peu pourquoi, je clique sur un UI qui à mon avis doit être à l'emplacement de la caméra.
J'ai essayé de modifier la valeur z de la position, mais rien de concluant
Ce que je n'arrive pas à faire c'est positionner mon objet à l'emplacement de ma souris.
Exemple, mon objet n'existe pas.
Je clique sur l'item
Je crée l'objet, à l'emplacement de la souris
et je le déplace.
C'est ce "à l'emplacement de la souris" que je n'arrive pas à faire.
Et comme je te disais précédement le :
Code : Tout sélectionner
transform.position = Camera.ScreenToWorldPoint(Input.mousePosition);
Je crois comprendre un peu pourquoi, je clique sur un UI qui à mon avis doit être à l'emplacement de la caméra.
J'ai essayé de modifier la valeur z de la position, mais rien de concluant
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.
Re: [DB-AL] Positionner objet sur curseur
Merci pour tout,
mais je réalise que ça parait très compliqué, pour ce que je veux faire, surtout qu'ensuite il va me falloir gérer la profondeur pour le drag.
Je vais abandonner cette idée, qui n'est pas indispensable pour mon jeu, et utiliser une méthode plus facile à gérer.
En tout cas merci Boubouk, je sais maintenant déplacer des UI, ça peut servir.
Je vais mettre mon sujet à Abandonne au lieu de résolu pour ne pas mal influencer les autres
mais je réalise que ça parait très compliqué, pour ce que je veux faire, surtout qu'ensuite il va me falloir gérer la profondeur pour le drag.
Je vais abandonner cette idée, qui n'est pas indispensable pour mon jeu, et utiliser une méthode plus facile à gérer.
En tout cas merci Boubouk, je sais maintenant déplacer des UI, ça peut servir.
Je vais mettre mon sujet à Abandonne au lieu de résolu pour ne pas mal influencer les autres
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.
- boubouk50
- ModoGenereux
- Messages : 6217
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [Abandonné][DB-AL] Positionner objet sur curseur
Dommage.
Le Drag 'n Drop utilise justement le placement sous la souris, si tu sais le faire, je ne comprends pas pourquoi tu ne peux pas positionner un élément 3D sous ta souris. La dernière vidéo montre clairement l'idée de positionnement en fonction de la souris. Ou alors, je n'ai pas bien compris la demande.
Normalement, ce code place ton objet sous la souris à une distance de 10 unités.
Le Drag 'n Drop utilise justement le placement sous la souris, si tu sais le faire, je ne comprends pas pourquoi tu ne peux pas positionner un élément 3D sous ta souris. La dernière vidéo montre clairement l'idée de positionnement en fonction de la souris. Ou alors, je n'ai pas bien compris la demande.
Code : Tout sélectionner
float distance = 10f;
Vector3 mousePos = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, distance);
transform.position = Camera.main.ScreenToWorldPoint(mousePos);
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: [Abandonné][DB-AL] Positionner objet sur curseur
Merci Boubouk,
Oui effectivement, c'est ce que j'avais fait, mais avec une distance moins grande, aux alentour de 1 si je me souviens bien,
mais j'ai du faire une erreur quelque part car j'avais mon objet sur le coté et pas en face.
En tout cas, merci
Mais comme je disais, j'ai utilisé une autre méthode, qui me convient tout autant, je positionne mon objet à sa position de destination et je le fais apparaître progressivement, avec le Drag n'Drop, j'aurais eu aussi un soucis de profondeur,
Oui effectivement, c'est ce que j'avais fait, mais avec une distance moins grande, aux alentour de 1 si je me souviens bien,
mais j'ai du faire une erreur quelque part car j'avais mon objet sur le coté et pas en face.
En tout cas, merci
Mais comme je disais, j'ai utilisé une autre méthode, qui me convient tout autant, je positionne mon objet à sa position de destination et je le fais apparaître progressivement, avec le Drag n'Drop, j'aurais eu aussi un soucis de profondeur,
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.
- boubouk50
- ModoGenereux
- Messages : 6217
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [Abandonné][DB-AL] Positionner objet sur curseur
Pour positionner un objet à une distance indéfinie, tu peux utiliser un Raycast pour déterminer un point de collision avec les éléments et utiliser ce point pour positionner le gameObject à la bonne distance.
Enfin, bon, voilà sache que les possibilités sont là, il faut réfléchir un peu à l'algorithme derrière.
Enfin, bon, voilà sache que les possibilités sont là, il faut réfléchir un peu à l'algorithme derrière.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation