mirror

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
hackotedelaplaque
Messages : 121
Inscription : mer. 21/janv./2004 22:18

mirror

Message par hackotedelaplaque »

Dans la série je suis plein de questions en voilà une autre :

J'utilise pour mon projet la librairie Sprite3D.
En regardant l'exemple j'ai vu qu'on pouvait effectuer sur le sprite quelques effets comme le zoom ou la rotation.

De mon côté j'aurai besoin d'un effet tout simple, le mirroir.
C'est juste histoire de ne pas charger deux fois le même sprite dans l'executable : un qui est tourné vers la gauche, l'autre vers la droite (sans compter toutes les frames qui décomposent l'animation de marche ou de saut).

Aurais-je raté quelque chose dans la doc ?
existe t il une librairie tierce qui le prend en charge ou mieux, un petit bout de code pour le réaliser ?

Merci !
10 CLS
20 PRINT "Vive PureBasic"
30 GOTO 20
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

de toute façon, mirroir ou pas, il faut créer un sprite. le plus simple étant de faire de nouvelle image.

sinon, il faire un startdrawing(spriteoutput(#sprite)) pour stocker tous les couleurs du sprite dans un tableau puis créer un nouveau sprite avec createsprite, l'éditer avec startdrawing(spriteoutput(#sprite)) et mettre les couleur en prenant la tableau mais à l'envers donc avec un
for x = 100 to 0 step -1
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Il n'y a pas moyen de faire un effet mirroir directement avec les commandes sprite3D, il faut effectivement créer un 2ème sprite.
Dans "tirez sur la nappe", je fait comme ça:

Code : Tout sélectionner


For numsprite=10000 To 10000+49+36*50
CreateSprite(numsprite,8,8,#pb_sprite_texture)
UseBuffer(numsprite)
For x=0 To 7
  ClipSprite(numsprite-10000,x,0,1,8)
  DisplaySprite(numsprite-10000,7-x,0)
Next
If WindowEvent()=#wm_keyup
   HideWindow(0,1) : End
EndIf
CreateSprite3D(numsprite,numsprite)
Next 
Le truc, c'est de jouer avec UseBuffer() et ClipSprite().
Ca doit être plus rapide que de passer par une image.
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
Répondre