Page 1 sur 1

mirror

Publié : sam. 06/mars/2004 19:21
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 !

Publié : sam. 06/mars/2004 20:58
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

Publié : sam. 06/mars/2004 22:02
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.