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

SDL Discussion :

Problemes de fluidité


Sujet :

SDL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut Problemes de fluidité
    Mon projet consiste en une reprise de CS2D et j'ais pensé , pour garder le joueur au centre de la fenetre , de blitter sa représentation au centre de la fenetre.En gros , j'ais

    SDL_Rect posPlayer;
    posPlayer.x = 320;
    posPlayer.y = 240;

    Ensuite , lorsque le joueur appuye sur la fleche de gauche , tout le décor bouge de 5 pixels vers la droite ( un peu a la mario ).
    Seulement lorsque je désire faire bouger de grandes surfaces avec cette technique , ça n'a pas un effet fluide ( effet sacadé ) ... Existe t'il un moyen pour simuler un mouvement autre que le déplacement 5 pxl par 5 pxl brut ?

  2. #2
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par ironzorg
    Mon projet consiste en une reprise de CS2D et j'ais pensé , pour garder le joueur au centre de la fenetre , de blitter sa représentation au centre de la fenetre.En gros , j'ais

    SDL_Rect posPlayer;
    posPlayer.x = 320;
    posPlayer.y = 240;

    Ensuite , lorsque le joueur appuye sur la fleche de gauche , tout le décor bouge de 5 pixels vers la droite ( un peu a la mario ).
    Seulement lorsque je désire faire bouger de grandes surfaces avec cette technique , ça n'a pas un effet fluide ( effet sacadé ) ... Existe t'il un moyen pour simuler un mouvement autre que le déplacement 5 pxl par 5 pxl brut ?
    Un code minimal exposant le problème serait pas mal. Il existe plusieurs techniques pour les Mario-like.

    Mais aujourd'hui, les ordinateurs sont capables de les faire tourner correctement sans trop se prendre la tête...
    Jc

  3. #3
    Membre émérite
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Par défaut
    Il faut activer le doublebuffer je crois

  4. #4
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut
    Désolé pour le retard ... ( problemes de LiveBox )

    En fait j'utilise la technique basique pour le mouvement d'une surface , à savoir le mouvement pixel par pixel :
    posPerso.x++;
    J'ais trouvé au début que cette méthode était trop lente pour déplacer le perso , car il fallait que celui ci se déplace plus vite. Je suis donc passé à :
    posPerso.x = posPerso.x+5;
    Mais là , le mouvement du perso est très saccadé : le programme détecte la pression d'une flèche directionnelle , bouge le perso de 5 pixel et attend que le joueur réappuie sur une autre touche. Seulement lorsque le joueur appuie de manière prolongée sur les flèches directionnelles , l'image du perso a un mouvement saccadé...

    PS : le double buffer est activé

  5. #5
    Membre Expert
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Par défaut
    Citation Envoyé par ironzorg
    Mais là , le mouvement du perso est très saccadé : le programme détecte la pression d'une flèche directionnelle , bouge le perso de 5 pixel et attend que le joueur réappuie sur une autre touche. Seulement lorsque le joueur appuie de manière prolongée sur les flèches directionnelles , l'image du perso a un mouvement saccadé...
    Le problème vient peut-être de la gestion des évennements. Cette méthode ne me semble à conseiller que quand les déplacements se font par cases et où une pression entraine un déplacement d'une unité. Pour un déplacement continu tout dépend de la répétition automatique de la touche et c'est moyen.

    Il faudrait plutôt qu'appuyer sur la touche fasse passer le personnage en mode "marcher dans la direction X" et que la relacher le remette sur neutre... et c'est tout. La modification de la position se fait en fonction de l'état du personnage lors de la mise à jour du jeu à chaque image ou à intervale de temps fixe (la deuxième solution ayant l'avantage de s'affranchir du taux de rafraichissement de la partie graphique). Avec ça, faire plus +1 pixel à chaque image ou +5 devrait donner une animation fluide (plus lente mais plus souple dans le premier cas).

  6. #6
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut
    OK je vois ... Mais je ne suis pas sur de comprendre "en fonction de l'état du personnage lors de la mise à jour du jeu" . Tu veux dire que par exemple, si l'image représentant le player est dirigée vers la droite et que le joueur appuie sur la flèche de droite , alors on appelle la fonction qui fait se déplacer le joueur vers la droite de x pixels vers la droite jusqu'a ce que la touche soit relachée ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme fluidite
    Par Aknilak dans le forum OpenGL
    Réponses: 15
    Dernier message: 15/06/2004, 08h59
  2. Probleme de rafraichissement d'un BDGrid
    Par marmotte dans le forum Bases de données
    Réponses: 10
    Dernier message: 28/05/2004, 18h07
  3. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01
  4. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

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