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

Allegro Discussion :

clic de souris et deplacement


Sujet :

Allegro

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Points : 4
    Points
    4
    Par défaut clic de souris et deplacement
    Salut à tous,

    J'ai une question donc concernant le clic de souris générant un déplacement.
    Donc, je voudrai que :
    1 - lorsque je clique sur dans mon image, les coordonnées de la souris soients égales à la position finale de mon bonhomme.
    2 - Que mon personnage fasse le déplacement nécessaire à partir de sa position initiale jusqu'à sa position finale correspondant aux coordonnées du clic de ma souris.

    J'ai essayé pas mal de choses mais rien de concluant. Merci de votre aide à tous.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    Salut,

    Tu souhaites que ton personnage se deplace a vitesse constante en ligne droite vers ton point ? C est assez simple. En pseudo code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    si clique de souris
        position_finale = position_clic  // position d arrivée
        position_initiale = position_sprite  // position de départ
        temps_initial = temps_courant  // heure de depart
        temps_total = dist(position_initiale,position_finale) / vitesse_sprite // temps de deplacement
     
    si (position_finale != position_sprite)
        ratio = (temps_courant - temps_initial) / temps_total // ratio entre le temps ecoulé et le temps total : 0 tu es au depart, 1 tu es a l arrivée
        si (ratio >= 1)
            position_sprite = position_finale // on est arrivé
        else
            position_sprite = position_initiale + ratio * (position_finale - position_initiale) // on interpole la position en fonction du temps courant et des positions de depart et d arrivée
    C est une simple interpolation lineaire entre deux points fonction du temps
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  3. #3
    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 381
    Points
    20 381
    Par défaut
    Salut oui il faut faire une interpolation linéaire comme le montre Frifron.
    Je conseille de mémoriser les différentes positions du personnage dans un std::vector par exemple ou une liste chainée en C ( sinon tu peux prendre un simple tableau dynamique de "waypoints" x et y)

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Merci de votre aide.

    Mais non, enfaite il ne s'agit pas de faire un mouvement en ligne droite. Il s'agit de faire un déplacement qui puisse aller partout. Si je suis en A1 je voudrai aller en D4. Néanmoins le chemin est rempli d'obstacles.

    Ce que j'ai pour l'instant, c'est la mémorisation des coordonnées du clics et mon personnage se téléporte.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    Salut,

    dans ce cas, il faut que tu implementes un algorithme de pathfinding. Tu peux regarder du coté de l algorithme A* qui fonctionne bien.

    En gros à partir d une case de départ,d une case d arrivée, l algorithme va calculer le chemin le plus court (ou en tout cas une des meilleurs solutions) en evitant les obstacles. Concernant l implémentation, ce n est pas très difficile a mettre en place. Il doit également exister du code tout fait sur le net.
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/09/2010, 11h26
  2. Réponses: 8
    Dernier message: 14/03/2005, 21h43
  3. Emuler et detecter un clic de souris (G, D, mollette)
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/02/2005, 17h25
  4. Réponses: 2
    Dernier message: 12/07/2004, 11h43
  5. Selection par clic de souris
    Par bilbonec dans le forum OpenGL
    Réponses: 7
    Dernier message: 16/04/2004, 00h25

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