Pages: [1] 2   Bas de page
Imprimer
Auteur Fil de discussion: [Résolu/PAlib] Vitesse de déplacement  (Lu 2130 fois)
0 Membres et 1 Invité sur ce fil de discussion.
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 926


Voir le profil WWW
sexe : oui (ndPyroh : Ouais ouais...)

« 07 Juillet 2009, 00:46:43 »

Salut à tous Smiley

Je ne sais pas si le titre est vraiment aproprié mais bon...

J'ai un bout de code qui déplace un sprite, cependant ce déplacement est trop lent et je me demandais comment faire pour accélérer ce mouvement sans perdre en fluidité.

Voici mon code (pas bien compliqué) :

Code
(c):
for(i = -64; i <= 15; i++) {
PA_SetSpriteXY(1,1,i,8); PA_SetSpriteXY(1,2,i,72);
PA_WaitForVBL();
}

Je suis sûr que la solution est hyper simple mais là...  whistle

C'est pour savoir s'il y avait une autre méthode que celle qui consisterais à augmenter i de 2 au lieu de 1.

Merci d'avance Azn
Journalisée


Pas si petit…
morukutsu Hors ligne
Sr. Member
****
Messages: 499


Voir le profil
Noctambule

« Réponse #1 : 07 Juillet 2009, 01:47:00 »

Enlever le PA_WaitForVBL(); peut être ?  Cheesy
Journalisée
Copper Hors ligne
Mega Member
***
Messages: 1296


Voir le profil
« Réponse #2 : 07 Juillet 2009, 05:55:00 »

Euh non  police

Augmenter le pas me semble être la seule solution...
Journalisée
Minishlink Hors ligne
Mega Member
***
Messages: 1439


Voir le profil WWW
Quand on veut, on peut !

« Réponse #3 : 07 Juillet 2009, 07:34:12 »

Oui, fais un i+2 au lieu de i++ dans ton for() et ça serait cool d'avoir 16 ou 14 (nombre paire) au lieu de 15 si tu fais ça. Wink
Journalisée

Pyroh Hors ligne
Aspirant graphiste
Administrateur
*****
Messages: 784


Voir le profil
Vive le jambon !

« Réponse #4 : 07 Juillet 2009, 09:03:02 »

Oui enlever le PA_WaitForVBL() c'est un peu la loterie  Azn
Journalisée

Citation de: Reppa chez Yus à 4h du mat en regardant "Salut les musclés" sur AB1
Ben quoi ? Matter ça c'est comme faire du retrogaming avec une télé Cheesy
Copper Hors ligne
Mega Member
***
Messages: 1296


Voir le profil
« Réponse #5 : 07 Juillet 2009, 09:18:50 »

Surtout qu'il me semble que l'OAM des sprites est mise à jour dans cette fonction...

De toute façon ca ne peut pas être fluide si l'on n'est pas synchro sur le VBL
Journalisée
Cid2Mizard Hors ligne
Super Mega Member
****
Messages: 4068


Voir le profil WWW
Disciple Kukulcanien

« Réponse #6 : 07 Juillet 2009, 09:25:47 »

Le PA_WaitForVBL(); est surement ailleurs dans son while dans le code, ici il ne sert à rien à part ralentir le tout
Journalisée

morukutsu Hors ligne
Sr. Member
****
Messages: 499


Voir le profil
Noctambule

« Réponse #7 : 07 Juillet 2009, 09:57:47 »

ça m'échappe totalement cette façon de coder avec le hardware 2D  whistle
C'est pas plus logique d'attendre qu'une fois le VBL par "tour de boucle principale" ?  Lips Sealed
Journalisée
Copper Hors ligne
Mega Member
***
Messages: 1296


Voir le profil
« Réponse #8 : 07 Juillet 2009, 09:59:50 »

Euh ... si on l'enlève on ne devrait plus voir le déplacement du sprite (il devrait arriver directement à la dernière position)

Après c'est sur que parfois il vaut mieux tout faire dans la boucle principale par exemple avec une variable step qui incrémente le déplacement du sprite à chaque tour de boucle...
« Dernière édition: 07 Juillet 2009, 10:03:29 par Copper » Journalisée
Campanile Hors ligne
Elite Member
**
Messages: 925


Voir le profil WWW
sic

« Réponse #9 : 07 Juillet 2009, 10:22:16 »

ça m'échappe totalement cette façon de coder avec le hardware 2D  whistle
C'est pas plus logique d'attendre qu'une fois le VBL par "tour de boucle principale" ?  Lips Sealed
+3,79 pour la vraie vie, mais là je pense que c'est juste un exemple comme ça ? Non ? Si quand même.
Journalisée

L'expérience, c'est ni plus ni moins qu'une petite quantité d'information qui aurait été fort utile quelques secondes avant qu'on l'apprenne...
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 926


Voir le profil WWW
sexe : oui (ndPyroh : Ouais ouais...)

« Réponse #10 : 07 Juillet 2009, 12:28:55 »

Oui en effet sans le WaitForVBL(), le déplacement est instantanné.

Je vais donc augmenter le pas et mettre 14 ou 16 (j'avais pas pensé aux impairs).

Par contre :
"for(i=0;i<=16;i+2)" compile mais la rom s'arrête dès qu'on atteint la boucle, faudrait pas mettre "i+=2" plutôt ?

Merci beaucoup de vos réponses Cheesy
Journalisée


Pas si petit…
Copper Hors ligne
Mega Member
***
Messages: 1296


Voir le profil
« Réponse #11 : 07 Juillet 2009, 12:33:39 »

Oui i += 2 sinon ca ne modifie pas la variable i
Journalisée
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 926


Voir le profil WWW
sexe : oui (ndPyroh : Ouais ouais...)

« Réponse #12 : 07 Juillet 2009, 12:44:24 »

Ça va, j'ai quand même des notions en C Azn
Journalisée


Pas si petit…
Cid2Mizard Hors ligne
Super Mega Member
****
Messages: 4068


Voir le profil WWW
Disciple Kukulcanien

« Réponse #13 : 07 Juillet 2009, 21:05:17 »

Oui sans le PA_WaitForVBL(); ton sprite fera l'allée en 1seconde3166666666 centième  Grin
Journalisée

Ludo6431 Hors ligne
Administrateur
*****
Messages: 903


Voir le profil WWW
It flies !

« Réponse #14 : 07 Juillet 2009, 21:16:14 »

lol, mais c'est qu'il se défend le petit nouveau Azn

edit : Cid2Mizard pourquoi O_o ?
Journalisée

Mon matériel : DS Lite blanche flashée v8 | DSi noire | SCLite | SCDS ONE v2 | SCDS TWO | DSerial EDGE | MK-R6 gold | rumble pack | R4(r4ds.cn) | M3i Zero | Acekard 2i | iTouch DS | CycloPS' iEvolution
Pages: [1] 2   Haut de page
Imprimer

Aller à: