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

XNA/Monogame Discussion :

La position de la souris


Sujet :

XNA/Monogame

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut La position de la souris
    Bonjour à tous.

    Je continue à faire mumuse avec XNA et là je suis un peu ennuyé parce que j'ai pas compris le positionnement de la souris. Surtout, enfait, parce que la doc que j'ai trouvé est en anglais, je crois.

    J'ai fais un petit modèle 3D en suivant un tuto de la MSDN sur XNA et j'ai voulu tenter un truc tout bête : je clique sur un endroit de la map (même si elle est toutes bleux, on va l'appeler comme ça !!!) et je voudrais que le model aille s'y placer tout seul, d'un coup.

    Sauf que là, j'ai des résultats qui ne correspondent pas : le modèle bouge, plus ou moins dans la direction voulu, mais beaucoup moins que ce que j'espère.
    Du coup, je me suis si que la X de la souris ne devait pas être le même que celui du vector3 de la position du model. Pareil pour le Y, évidement.

    J'ai fais ça comme code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Vector3 modelPosition = Vector3.Zero;
     
    if (currentMouseState.LeftButton == ButtonState.Pressed)
                {
                    modelPosition.X = -currentMouseState.X;
                    modelPosition.Y = -currentMouseState.Y;
                }
    Et donc, aprés avoir lu des articles dans le MSDN, j'arrive pas à bien comprendre la différence enrte le deux, pouvez m'expliquer ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  2. #2
    screetch
    Invité(e)
    Par défaut
    la souris est dans un "monde" (ton ecran) en 2D
    ton objet est dans un "monde" en 3D
    il n'y a donc pas de correspondance souris->objet simple. C'est toujours a toi de fournir un "mapping" entre les deux.

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour l'info.

    Et comment je peux faire ce mapping ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  4. #4
    screetch
    Invité(e)
    Par défaut
    Ca dépend de ce que tu veux faire.

    Mais en gros il s'agit de projeter la position de la souris (grace a la matrice de la caméra) dans le monde, dans un plan parallèle a la caméra et qui passe par l'objet que tu manipules; c'est une sorte de lancer de rayon, qui part de la caméra (plus précisément, du point que la souris pointe) et qui rencontre ce plan qui passe par l'objet. Ce point d'intersection devrait être la nouvelle position de l'objet.

  5. #5
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Ok merci pour le cours théorique, c'est trés enrichissant, un peu redondant puisque j'avais très bien compris, mais sympa.

    Et maintenant, tu aurais un peu de code ou un objet à voir dans la MSDN ou un truc plus technique et pragmatique ?

    Parce que ce que je veux faire, je l'ai dit dans mon premier message : bouger l'objet au point cliqué par la souris.

    Mais bon, je ne fais pas trop d'illusion, ma remarque doit être trop directe pour avoir une réponse.

    Bonne soirée.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  6. #6
    screetch
    Invité(e)
    Par défaut
    ben j'ai expliqué plus haut, prendre le point d'intersection entre le segment qui part de la souris et le plan qui passe par le centre de l'objet
    placer le centre de l'objet au point d'intersection

    c'est bien ca qu'il faut faire, après je ne connais pas ni ta caméra ni tes objets ni ta souris donc je passe pour le code.

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    XNA facilitant beaucoup les choses, il y a une fonction pour faire le calcul de la position écran (le curseur) à la position monde -> http://msdn.microsoft.com/en-us/libr...unproject.aspx

    On peut coupler aussi avec la classe Ray pour faire un lancer de rayon de la camera vers le monde afin de savoir sur quoi le joueur à cliquer.

    Et comme c'est un sujet qui est très récurrent dans les jeux vidéos, on trouve des tonnes de ressources / posts sur forum avec ce même sujet :
    http://ghoshehsoft.wordpress.com/201...torial-part-i/

    Donc, je vous invite à faire des recherches google car la documentation existe (mots clés: "3D Picking XNA" par exemple)
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  8. #8
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour les liens et le vocabulaire que je ne connaissais pas.

    Je vais potasser tout ça.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  9. #9
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 255
    Points : 445
    Points
    445
    Par défaut
    Salut zooffy,

    Dans cet exemple de Valentin Billotte on voit l'interaction entre un curseur 2D et un monde 3D (unproject):

    http://www.catuhe.com/msdn/amxna/DavidWindowsGame.zip

    Le code en question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Vector3 start = GraphicsDevice.Viewport.Unproject(new Vector3(_playerPosition, 0), _camera.Projection, _camera.View, Matrix.Identity);
    Vector3 end = GraphicsDevice.Viewport.Unproject(new Vector3(_playerPosition, 1), _camera.Projection, _camera.View, Matrix.Identity);
    Vector3 aimDirection = end - start;
    aimDirection.Normalize();
    Ray aimRay = new Ray(start, aimDirection);
    Salutations.

  10. #10
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Désolé pour l'absence.

    J'ai téléchargé le zip mais je n'ai pas pu le faire démarrer parce que je suis dans la version d'avant : VS 2008 et XNA 3.0.

    Mais je vais tenter de postasse le bout de code pour voir ce que je peux en faire.

    Merci.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

Discussions similaires

  1. nom d'un controle et position de la souris
    Par manu80000 dans le forum Langage
    Réponses: 1
    Dernier message: 12/01/2006, 16h12
  2. [C#]Drag & Drop, problème de position de la souris
    Par debug dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/10/2005, 13h06
  3. Position de la souris
    Par abcd dans le forum Langage
    Réponses: 10
    Dernier message: 31/03/2005, 18h09
  4. Déterminer la position de la souris
    Par genteur slayer dans le forum Composants VCL
    Réponses: 6
    Dernier message: 16/06/2003, 11h01
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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