| scrolling différentielle et incohérence dans le déplacement | |
|
|
Auteur | Message |
---|
chopsuey Utilisateur confirmé: Rang ***
Messages : 523 Localisation : saint etienne Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...
| Sujet: scrolling différentielle et incohérence dans le déplacement Lun 21 Nov 2011 - 21:55 | |
| salut tous le monde ! bon alors voila sa va bientôt faire 3 semaine que j'essaye de faire un scrolling réaliste avec une impression de distance comme je l'avais expliquer sur ce post https://cbna.forumactif.com/t11370-question-backgrounds. sa va faire 3 semaine que je n'ai pas avancé dans mon jeu, pire en faite j'ai reculer car j'ai tous recommencer tant mon jeu était en désordre je ne mit retrouvais plus du tout j'avais plusieurs objet pour mon perso . alors j’essaie de tous refaire mais j'ai 2 problème le 1er lorsque je décale mon perso jusqu’à qu'il fasse bouger la view à droite la montagne et le ciel ce déplace en même temps qu'elle mais un peu moins vite pour obtenir l'effet de profondeur rechercher, sauf que si je me tourne à gauche et que je me retourne à droite alors le décore se décale de quelque pixel à droite puis à gauche laissent une impression de tremblement de l'écran. 2eme problème quand j’appuie sur D hspeed=2 et le sprite= sprite du perso qui marche à droite, quand je relâche D hspeed=0 et le sprite= sprite du perso à l'arrêt. et c'est exactement la même chose mais à l'inverse pour Q direction à gauche et ce qui est étrange c'est que lorsque j'appuie sur D puis sur Q en mème temps le perso se déplace à gauche avec le sprite pour marcher à gauche mais la subimage rèste à 0 donc l’animation ne ce fait pas. jusque la c'est normale étend donné que j'ai la touche D enfoncer mais si j'appuie sur Q puis sur D le perso ne ce déplace pas vers la droite en changeant de sprite il continue sa trajectoire à gauche en restant bloqué sur la subimage 0 alors pourquoi avec un mème code inversé le résulta n'est pas le même pour la gauche et la droite ? le problème c'est que du coup je n'arrive pas à faire en sorte que lorsque j'appuie sur D+Q le perso s'arrête avec le sprite du perso à l'arrêt orienté vers la droite si j'ai fait D+Q et vers la gauche si j'ai fait Q+D. si vous vous demandez pourquoi je n'utilise pas pour me déplacé x+=2 se qui pourrais évité certains problèmes c'est par ce que quand je saute avec dans mon code x+=2 au lieu de hspeed=2 lorsque je retombe il y a denouveau le même décalage que dans mon 1er problème. voila c'est un peut compliqué à comprendre peut être alors je vous laisse télécharger si vous voulez bien m'aider mon fichier .gm81 http://www.host-a.net/u/shopsueys/hero_test.gm81si vous n'avez pas gm81 je suis prêt à vous faire un exemple sur Gm6.
Dernière édition par chopsuey le Ven 25 Nov 2011 - 16:56, édité 1 fois |
|
| |
Wargamer *Excellent utilisateur*
Messages : 6938 Projet Actuel : Bataille de cake au fruits
| Sujet: Re: scrolling différentielle et incohérence dans le déplacement Mer 23 Nov 2011 - 16:05 | |
| J'avais lu ton message mais j'avais pas lu la dernière partie. Envoie un GM6 ca serait sympa. J'ai que GM 8.0 je peux pas ouvrire ton fichier. |
|
| |
chopsuey Utilisateur confirmé: Rang ***
Messages : 523 Localisation : saint etienne Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...
| Sujet: Re: scrolling différentielle et incohérence dans le déplacement Mer 23 Nov 2011 - 20:56 | |
| |
|
| |
Wargamer *Excellent utilisateur*
Messages : 6938 Projet Actuel : Bataille de cake au fruits
| Sujet: Re: scrolling différentielle et incohérence dans le déplacement Jeu 24 Nov 2011 - 1:14 | |
| Pour le #1 c'est relativement simple de ce que je vois. Tu utilise h_speed pour déplacer ton perso, ce qui fait qu'il continue de se déplacer même après que tu ait appuyer sur la touche. La view suit le perso alors que tu n'appuit plus, ce qui entriane le décalage de 2-3 pixel quand tu recule puis revient, x_view n'a pas la dernier valeur de ta view.
pour le 2, c'est une question d'ordre d'exécution. GM voit 2 touche, Q et E, il va voir E, il change le sprite, met l'animation à 0. Puis il va voir Q, Le sprite est celui de droite, alors il le change et met l'animation à 0. Puis il recommence, il fait E et voit que c'est pas le sprite de gauche, met lui de droite, etc...
Je connais pas assez ton code poru le corriger par contre. |
|
| |
chopsuey Utilisateur confirmé: Rang ***
Messages : 523 Localisation : saint etienne Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...
| Sujet: Re: scrolling différentielle et incohérence dans le déplacement Jeu 24 Nov 2011 - 7:19 | |
| merci mais pour mon 1er problème je vois pas ce que je suis sensé faire j'ai bien essayé de replacer mes hspeed=2 par x+=2 mais sa change rien. |
|
| |
chopsuey Utilisateur confirmé: Rang ***
Messages : 523 Localisation : saint etienne Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...
| Sujet: Re: scrolling différentielle et incohérence dans le déplacement Jeu 24 Nov 2011 - 20:58 | |
| |
|
| |
Termite Utilisateur confirmé: Rang ****
Messages : 1005 Localisation : Dans ta charpente ! Projet Actuel : RayEngine 5.0
| Sujet: Re: scrolling différentielle et incohérence dans le déplacement Ven 25 Nov 2011 - 2:13 | |
| Ha, le scrolling différentielle Le principe est simple, tu calcule la vitesse de la camera comme ça : - Code:
-
[create] old_camx = view_xview; old_camy = view_yview; cam_xspeed=0; cam_yspeed=0;
[step] cam_xspeed=view_xview-old_camx; cam_yspeed=view_yview-old_camy;
Ensuite, une fois que t'as la vitesse de la cam, tu multiplie par un certain coefficient pour chaque calque de l'arrière plan, par exemple : background_x[0] += cam_xspeed*0.5; background_y[0] += cam_yspeed*0.5; background_x[1] += cam_xspeed*0.25; background_y[1] += cam_yspeed*0.25; Et voilà ! Bon, c'est pas la meilleur technique, perso j'ai fait mon scroll différentiel en utilisant des règles de proportionnalité, tout dépend de si ton background est tileable ou pas (tileable ça veut dire que tu peux le répéter) |
|
| |
chopsuey Utilisateur confirmé: Rang ***
Messages : 523 Localisation : saint etienne Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...
| Sujet: Re: scrolling différentielle et incohérence dans le déplacement Ven 25 Nov 2011 - 15:32 | |
| merci termite pour ta réponse mais il y a un petit problème j'ai mis if keyboard_check_(ord('D')) {background_x[0]+= cam_xspeed*0.2;}
mais le backgrounds va de plus en plus vite j'ai l'impression qu'il additionne sa propre vitesse à chaque step. |
|
| |
chopsuey Utilisateur confirmé: Rang ***
Messages : 523 Localisation : saint etienne Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...
| Sujet: Re: scrolling différentielle et incohérence dans le déplacement Ven 25 Nov 2011 - 22:06 | |
| du coup j'ai enlever le + dans background_x[0] += cam_xspeed*0.5; mais le problème est exactement le même qu'avec mon ancien code. |
|
| |
PsycKho Très bonne participation
Messages : 154 Projet Actuel : http://www.sharedojo.netai.net/
| Sujet: Re: scrolling différentielle et incohérence dans le déplacement Sam 26 Nov 2011 - 23:41 | |
| Faut pas l'enlever, faut le remplacer par un moins.Nvm. J'regarde pour te faire un exemple. Sur GM8 ça te va? Il manquait l'actualisation du oldxview - Code:
-
cam_xspeed=view_xview-old_camx; cam_yspeed=view_yview-old_camy; old_camx = view_xview; old_camy = view_yview;
Voilà. Après, personnellement j'utilise pas les backgrounds de game maker parce qu'il faut trouver une système : Les backgrounds ne bougent pas immédiatement, y'a un décalage. Donc ton scroll va commencer en décalage et terminer en décalage. À ta place, j'utiliserais un draw (avec le même calcul qui lui marche très bien.) |
|
| |
chopsuey Utilisateur confirmé: Rang ***
Messages : 523 Localisation : saint etienne Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...
| Sujet: Re: scrolling différentielle et incohérence dans le déplacement Dim 27 Nov 2011 - 12:09 | |
| merci oui je veu bien un exemple j'ai essayer avec ton code et effectivement il y a toujours un décalage pourait tu faire le même système pour les tiles dans ton exemple ? tu peut utiliser mon gm6 pour l'exemple http://www.host-a.net/u/shopsueys/test2.gm6 |
|
| |
PsycKho Très bonne participation
Messages : 154 Projet Actuel : http://www.sharedojo.netai.net/
| Sujet: Re: scrolling différentielle et incohérence dans le déplacement Lun 28 Nov 2011 - 1:30 | |
| - Citation :
- Voilà. Après, personnellement j'utilise pas les backgrounds de game maker parce qu'il faut trouver une système : Les backgrounds ne bougent pas immédiatement, y'a un décalage. Donc ton scroll va commencer en décalage et terminer en décalage. À ta place, j'utiliserais un draw (avec le même calcul qui lui marche très bien.)
|
|
| |
chopsuey Utilisateur confirmé: Rang ***
Messages : 523 Localisation : saint etienne Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...
| Sujet: Re: scrolling différentielle et incohérence dans le déplacement Lun 28 Nov 2011 - 7:09 | |
| oui mais j'ai essayer mais je n'y arrive pas j'ai draw le bg depuit un autre objets draw_background_(ciel1,0,0);
et dans le step de mon perso j'ai mis
background_x[ciel1] += cam_xspeed*0.5; background_y[ciel1] += cam_yspeed*0.5;
mais sa ne décale rien |
|
| |
master47 Utilisateur confirmé: Rang *****
Messages : 2368 Projet Actuel :
-------------------
> PacWars
> The Perfect Pattern Studio
| Sujet: Re: scrolling différentielle et incohérence dans le déplacement Lun 28 Nov 2011 - 9:04 | |
| Logique ! Ton background est dessiné dans l'autre object à la position (0;0), pourquoi ? parce que tu a écris : - Code:
-
draw_background( ciel1, 0, 0);
la définition de la méthode étant draw_background( id, x, y)Tu dois plutôt écrire : - Code:
-
draw_background( ciel1, global.Ciel1X, global.Ciel1Y);
et dans step : - Code:
-
global.Ciel1X += cam_xspeed*0.5; global.Ciel1Y += cam_yspeed*0.5;
Remarque que je n'ai pas écris background_x[ ciel1], c'est parce que background_x n'assigne pas X à un background via son ID, background_x[n] attribue la position x au background à la position n dans le tableau background_index[]. Je ne sais pas si j'ai été assez clair. |
|
| |
chopsuey Utilisateur confirmé: Rang ***
Messages : 523 Localisation : saint etienne Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...
| Sujet: Re: scrolling différentielle et incohérence dans le déplacement Lun 28 Nov 2011 - 17:50 | |
| merci master47 sa marche parfaitement, mais tu à mis les x et les y en majuscule et du coup sa marchait pas je le précise juste pour ce qui serait intéresser par le scrolling différentiel et qui tomberais sur ce sujet. merci à vous tous |
|
| |
master47 Utilisateur confirmé: Rang *****
Messages : 2368 Projet Actuel :
-------------------
> PacWars
> The Perfect Pattern Studio
| |
| |
chopsuey Utilisateur confirmé: Rang ***
Messages : 523 Localisation : saint etienne Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...
| Sujet: Re: scrolling différentielle et incohérence dans le déplacement Dim 4 Déc 2011 - 11:13 | |
| bon je pensais que j'en avais enfin fini avec le scrolling différentielle mais finalement sa ne marche pas comme il le faudrait. en faite si je met global.Ciel1X += cam_xspeed*0.5; global.Ciel1Y += cam_yspeed*0.5;
tous marche bien mais si je veux faire en sorte d'avoir un décor qui paraitrait plus fixe à l’écran donc plus éloigné il faux que le coefficient soit plus proche de 1 donc par exemple
global.Ciel1X += cam_xspeed*0.8; global.Ciel1Y += cam_yspeed*0.8; mais du coup le décalage refait son apparition, plus je me rapproche de 1 et moins sa va |
|
| |
Contenu sponsorisé
| Sujet: Re: scrolling différentielle et incohérence dans le déplacement | |
| |
|
| |
| scrolling différentielle et incohérence dans le déplacement | |
|