IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Unity Discussion :

déplacer une image quand on clique dessus


Sujet :

Unity

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 165
    Points : 0
    Points
    0
    Par défaut déplacer une image quand on clique dessus
    Salut à tous,

    Voila ma question:

    je chercher à déplacer une image (png) avec la souris,
    (seulement lorsque l'on clique dans une zone non transparente).

    Nom : brty.png
Affichages : 600
Taille : 140 octets

    La forme géométrique rose doit se déplacer uniquement si l'utilisateur clique sur la zone colorée.

    Et se relâcher lorsque l'utilisateur relâche le bouton de la souris.

    Merci à vous,

    A+

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    - quelles bibliothèques ?
    - où est le code ?
    - où est le problème ?

    > on click, on récupère les coordonnées
    > on les compare à la position de l'image
    > on extrait le pixel correspondant de l'image
    > on vérifie qu'il soit pas transparent
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 165
    Points : 0
    Points
    0
    Par défaut
    Salut à vous,

    J'aimerais savoir si je clique dans une zone transparente ou non.
    Je cherche à déplacer la forme geometrique avec la souris uniquement si l'utilisateur clique dans le rose.

    Dans l'attente d'une aide précieuse,

    A+

  4. #4
    Membre éprouvé
    Avatar de Garvelienn
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2016
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2016
    Messages : 244
    Points : 993
    Points
    993
    Par défaut
    Bonjour,

    Votre titre de conversation ne correspond pas à votre problème.

    Sinon, Bousk vous a déjà donné la méthode pour le résoudre.

    Il vous reste à chercher avec ces mots clés dans la documentation d'Unity et/ou avec un moteur de recherche.

    Où coincez-vous ? Avez-vous du code ?
    «Le management, tel qu’on l’apprend dans les écoles et tel qu’on l’applique ensuite, sous prétexte de «motivation du personnel», organise exactement le contraire, à savoir la démotivation organisée.» - Bernard Stiegler

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 165
    Points : 0
    Points
    0
    Par défaut
    Coucou,

    En fait, je coince pour détecter si l'utilisateur clique sur une zone transparente ou non.

    Votre aide est la bienvenue,

    A+

  6. #6
    Membre éprouvé
    Avatar de Garvelienn
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2016
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2016
    Messages : 244
    Points : 993
    Points
    993
    Par défaut
    Ma question demandait une réponse technique. Et pas une redite de ce que vous aviez précédemment dit.

    En quoi la réponse de Bousk ne vous convient pas ?
    «Le management, tel qu’on l’apprend dans les écoles et tel qu’on l’applique ensuite, sous prétexte de «motivation du personnel», organise exactement le contraire, à savoir la démotivation organisée.» - Bernard Stiegler

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 165
    Points : 0
    Points
    0
    Par défaut
    -Voici mes librairies:

    using UnityEngine;
    using System.Collections;

    -Je n'ai pas de code (c'est ce que j’espérais de votre aide).

    -Le problème c'est que lorsque je clique sur une zone transparente de l'image celle-ci ne doit pas se déplacer.

    Merci à vous,

    A+

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Le problème c'est que tu espères qu'on fasse ton exercice à ta place. Ce que nous ne faisons pas ici même si tu répètes 6 fois ton problème.
    http://lmgtfy.com/?q=unity+extract+pixel
    Texture2D.GetPixel
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  9. #9
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 379
    Points
    20 379
    Par défaut
    Citation Envoyé par julius1983 Voir le message
    La forme géométrique rose doit se déplacer uniquement si l'utilisateur clique sur la zone colorée.
    Et se relâcher lorsque l'utilisateur relâche le bouton de la souris.
    A+
    Le plus simple pour remédier à ce problème c'est de prendre les coordonnées du centre de la forme géomètrique , de déteminer le rayon de la forme géomètrique et en fonction de cela si les coordonnées souris X,Y sont inscrites dans le cercle, on peut déplacer la forme.
    L'inconvénient de cette méthode est que cela manque de précision.

    Autre méthode avec les coordonnées souris il faut tester si elles sont égales aux coordonnées pixel qui dessinent la forme ( bref la solution de Bousk)
    Par contre ça risque d'être coûteux en temps d'exécution

    Dernière méthode si la forme est rectangulaire c'est de faire des divisions rectangulaires et tester si la souris X,Y est inscrite dans un de ces rectangles

  10. #10
    Membre expérimenté
    Avatar de Greg Latiner
    Homme Profil pro
    Développeur JV
    Inscrit en
    Février 2014
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Développeur JV

    Informations forums :
    Inscription : Février 2014
    Messages : 341
    Points : 1 313
    Points
    1 313
    Par défaut
    Bonjour,

    Une piste à suivre par le biais de la doc: Image.alphaHitTestMinimumThreshold.
    L'image en Read/Write Enabled, et en Full Rect.

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 165
    Points : 0
    Points
    0
    Par défaut
    Salut à tous,

    ma question est surement résorbable :

    Comment déplacer avec la souris la forme rose uniquement lorsque on clique sur la couleur rose (pas dans la zone transparente).

    https://www.developpez.net/forums/at...ssus/brty.png/

    Votre code est le bienvenue (même si j'ai cherché tout google et je n'ai rien trouvé).

    Merci de votre aide,

    A+

  12. #12
    Membre expérimenté Avatar de Tonton Nico
    Homme Profil pro
    Ingénieur
    Inscrit en
    Septembre 2017
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 398
    Points : 1 320
    Points
    1 320
    Par défaut
    Salut,

    Pour la nième fois, le but n'est pas de te donner le code tout fait comme ça, dis nous plutôt la ou tu bloques.

    - Tu sais déplacer une image? google peut t'aider le cas échéant
    - Tu sais comment ajouter/détecter que l'on clic sur une image? google peut t'aider le cas échéant

    La combinaison des deux devrait répondre à ton besoin en plus
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 165
    Points : 0
    Points
    0
    Par défaut
    Salut à toi,

    J'ai parcouru tout Internet, je n'ai rien trouvé (que des codes qui ne marchent pas)
    Voici ce que je vous voudrais :

    -déplacer une image transparente

    -comment ajouter/détecter que l'on clic sur une image transparente ou non,
    peut-être avec la fonction GetPixel

    Votre aide est la bienvenue,

    A+

  14. #14
    Membre expérimenté
    Avatar de Greg Latiner
    Homme Profil pro
    Développeur JV
    Inscrit en
    Février 2014
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Développeur JV

    Informations forums :
    Inscription : Février 2014
    Messages : 341
    Points : 1 313
    Points
    1 313
    Par défaut
    Bonjour,

    Il serait déjà bien d'essayer d'apprendre les bases (éternel conseil). Idem pour les recherches. J'ai beaucoup de mal à croire que tu n’ai rien trouvé.
    Je pense que tu as surtout du mal à faire la recherche avec les bons mots.
    Déjà si tu pars avec des mots clé type "Image" & "Drag", tu tomberas sur une multitude de sujets traitant du trucs, avec les deux/trois lignes de codes nécessaires à l'opération.
    Idem pour la transparence. Il faut se dire que ces problèmes ont déjà été rencontrés depuis bien longtemps par les utilisateur d'Unity, et que l'API contient probablement la réponse (que j'ai donné plus haut et que tu sembles avoir ignoré).
    Résultat (je suis d'humeur partageur aujourd'hui), tu parles d'image à déplacer (les termes ont leur importance, donc Image = Canvas,UI system), alors le code se résume à ces quelques lignes (code à placer en guise de component sur le gameobject contenant l'Image):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    using UnityEngine;
    using UnityEngine.UI;
    using UnityEngine.EventSystems;
     
    public class DragImage : MonoBehaviour, IDragHandler
    {
     
        private void Start()
        {
            // passe l'alphaHit au mini pour ignorer la transparence
            this.GetComponent<Image>().alphaHitTestMinimumThreshold = 0.001f;
        }
     
        // méthode pour drag l'image
        public void OnDrag(PointerEventData eventData)
        {
            transform.position += (Vector3)eventData.delta;
        }
    }

  15. #15
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 165
    Points : 0
    Points
    0
    Par défaut
    Salut à tous,

    Ton code m'a bien aidé et l'image se déplace bien. Merci à toi.
    Le problème c'est qu'elle se déplace même quand on clique dans la zone blanche (zone transparente).
    Peut-être avec la fonction GetPixel. Je ne suis pas bien aguerri avec le code, soyez sympa, j'ai cherché dans google.

    Merci de votre aide,

    A+

  16. #16
    Membre expérimenté Avatar de Tonton Nico
    Homme Profil pro
    Ingénieur
    Inscrit en
    Septembre 2017
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 398
    Points : 1 320
    Points
    1 320
    Par défaut
    D'habitude je défends la veuve et l'orphelin mais la j'irais moi même chercher du petits bois dans la forêt pour te faire brûler sur la place publique si c'était encore possible

    Citation Envoyé par julius1983 Voir le message
    Peut-être avec la fonction GetPixel
    Comment reprendre l'idée de Bousk pour faire genre tu a réfléchis un peu au truc

    Citation Envoyé par julius1983 Voir le message
    Je ne suis pas bien aguerri avec le code, soyez sympa, j'ai cherché dans google
    A-t-on vraiment besoin de répondre à cela LOL

    Merci à Greg pour son aide en effet, personnellement j'espère que tu vas chercher un peu plus par toi même et l'on t'aidera avec plaisir quand tu auras du nouveau code mais que tu bloqueras sur certains points
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  17. #17
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 165
    Points : 0
    Points
    0
    Par défaut
    Salut à tous,

    Voici le code que j'ai modifié comme demandé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    using UnityEngine;
    using UnityEngine.UI;
    using UnityEngine.EventSystems;
     
    public class DragAndDrop : MonoBehaviour, IDragHandler
    {
        //                voici la variable que j'ai rajoutée
        Image img;  //*********************************************
     
        private void Start()
        {
     
            this.GetComponent<Image>().alphaHitTestMinimumThreshold = 0.001f;
        }
     
        public void OnDrag(PointerEventData eventData)
        {
            Plane plane = new Plane(Vector3.up, new Vector3(0, 0, 0));
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            float distance;
            if (plane.Raycast(ray, out distance))
            {
                transform.position = ray.GetPoint(distance);
            }
     
     //***************************************************************************************************************************** 
    //  Voici ci-dessous la ligne de code que j'ai rentré. Je teste si l'image est transparente ou non où l'utilisateur a cliqué.
    //******************************************************************************************************************************
            if (img.sprite.texture.GetPixel(Input.mousePosition.x, Input.mousePosition.z).a != 0)
     
             transform.position += (Vector3)eventData.delta;
        }
    }
    Le problème c'est que les variables "Input.mousePosition.x" et "Input.mousePosition.z" envoient un message d'erreur.

    Merci pour votre aide.

    A+

  18. #18
    Membre expérimenté Avatar de Tonton Nico
    Homme Profil pro
    Ingénieur
    Inscrit en
    Septembre 2017
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 398
    Points : 1 320
    Points
    1 320
    Par défaut
    Je pense que c'est juste une erreur entre "Z" et "Y" dans ta ligne de code
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  19. #19
    Membre expérimenté
    Avatar de Greg Latiner
    Homme Profil pro
    Développeur JV
    Inscrit en
    Février 2014
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Développeur JV

    Informations forums :
    Inscription : Février 2014
    Messages : 341
    Points : 1 313
    Points
    1 313
    Par défaut
    Bonsoir,

    Je ne sais pas ce que tu cherches à bricoler niveau code ... (t'as pioché des bouts de code sur la toile en fait j'ai l'impression)
    Le code que je t'ai fournis correspond à ton besoin. Si cela ne fonctionne pas c'est que ton soucis est ailleurs.
    Pour commencer, as-tu un chanel alpha sur ton image par exemple ? (une zone "blanche", ça ne marche pas)
    Ton image est-elle bien déclarée dans Untiy dans l'AlphaSource en tant que "Input Texture Alpha" ?

  20. #20
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 165
    Points : 0
    Points
    0
    Par défaut
    Salut,

    j'ai rentré le code suivant (je teste si l'utilisateur clique dans une zone transparente ou non).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (img.sprite.texture.GetPixel(Input.mousePosition.x, Input.mousePosition.z).a != 0)
    Le problème c'est que, (Input.mousePosition.x, Input.mousePosition.z) renvoient un message d'erreur.

    Il faut déplacer la forme rose uniquement lorsque l'on clique dans du rose.

    Votre aide est la bienvenue.

    Merci à vous

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. déplacer une image
    Par xeland dans le forum Windows
    Réponses: 7
    Dernier message: 13/02/2008, 14h33
  2. Déplacer une image dans un formulaire
    Par WITER dans le forum IHM
    Réponses: 2
    Dernier message: 01/11/2007, 03h47
  3. Déplacer une image non téléchargée
    Par Asmodean dans le forum Langage
    Réponses: 1
    Dernier message: 05/07/2007, 12h27
  4. Déplacer une image
    Par prgasp77 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 15/05/2007, 17h35
  5. Déplacer une image
    Par rikku84 dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 19/04/2007, 02h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo