Page 1 sur 2

[ok] Animation de Sprite / Decoupe

Publié : mar. 26/janv./2010 10:25
par Ar-S
Salut,
J'ai créé le début d'une planche de sprite de mon (futur) héros "Johnny Egg" que j'ai créé au collège y'a déjà une bonne vingtaine d'années.

J'ai eu beau lire les pages
http://www.purebasic.fr/french/viewtopi ... 88&start=0
http://www.purebasic.fr/french/viewtopi ... 57&start=0
http://www.purebasic.fr/french/viewtopi ... 736#p87736

j'arrive à rien. Je suis une vraie bille :| pourtant je pense que tout est là

Voilà l'image.

Image

Elle fait 384x64 et les séquences sont en 64x64 donc 3 sprites pour marcher vers la droite et 3 pour marcher vers la gauche.

Pourriez vous me montrer un code commenté pour créer une animation avec cette planche ?
(le courage pour un nouveau tuto?)

Merci aux courageux.

Pour le moment j'ai juste fait le code qui affiche l'image globale et qu'on peut déplacer avec les flèches <- ->

Code : Tout sélectionner

InitSprite() : InitKeyboard()
UsePNGImageDecoder()

;fenêtre
Lfenetre=GetSystemMetrics_(#SM_CXSCREEN)  ; recup la resolution de l'ecran en cours
Hfenetre=GetSystemMetrics_(#SM_CYSCREEN)
If Lfenetre>800 And Hfenetre>400
  Lfenetre=800 : Hfenetre=400
EndIf
Lscreen=Lfenetre : Hscreen=Hfenetre-20
centre=Lscreen/2-LPalette/2 ; on trouve le centre de la fenetre

OpenWindow(0, #PB_Ignore, #PB_Ignore, Lfenetre, Hfenetre, "Window", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ButtonGadget(0, 0, Hfenetre-20, 100, 20, "Quitter")
OpenWindowedScreen(WindowID(0), 0, 0, Lscreen, Hscreen, 0, 0, 0)
 

Structure jojo
  PosX.l
  PosY.l
  BougeX.l
  BougeY.l
EndStructure
Global Dim jojo.jojo(1)

jojo(1)\PosX=0
jojo(1)\PosY=Hscreen-64 
jojo(1)\BougeX=10
jojo(1)\BougeY=-10

If LoadSprite(0,"img/je_marche_petit.png",0)
Else
  Debug "ça chie au chargement du sprite"
EndIf


;{- Event loop
Repeat
  FlipBuffers()
  ClearScreen(RGB(0, 0, 0))
  
  Event= WindowEvent ()
  Delay (2)
  ExamineKeyboard ()
  
  ;---AFFICHAGE----
  TransparentSpriteColor(0,$FF00FF)
  DisplayTransparentSprite(0,jojo(1)\PosX ,jojo(1)\PosY ) 
  
  
  If KeyboardPushed(#PB_Key_Left)
    jojo(1)\PosX=jojo(1)\PosX-10
    If jojo(1)\PosX<0
      jojo(1)\PosX=0
    EndIf
  EndIf 
  
  If KeyboardPushed(#PB_Key_Right)
    jojo(1)\PosX=jojo(1)\PosX+10
    If jojo(1)\PosX>Lscreen-64
      jojo(1)\PosX=Lscreen-64
    EndIf
  EndIf
  
  If KeyboardPushed(#PB_Key_Escape)
    Break 
  EndIf
  
  Repeat
    Event = WindowEvent()
    
    Select Event
      Case #PB_Event_Gadget
        If EventGadget() = 0
          End
        EndIf
        
      Case #PB_Event_CloseWindow
        End
    EndSelect
  Until Event = 0
  
ForEver

Re: Animation de Sprite / Decoupe

Publié : mar. 26/janv./2010 11:05
par flaith
J'avais posté un truc dans le genre ici : http://www.purebasic.fr/french/viewtopic.php?f=6&t=7049
si ca peut t'aider :wink:

(Mettre directx7 dans la bibliothèque sous-système)

Re: Animation de Sprite / Decoupe

Publié : mar. 26/janv./2010 11:25
par TazNormand
Salut

l'utilisation de clipsprite ne serait elle pas judicieuse ???

Re: Animation de Sprite / Decoupe

Publié : mar. 26/janv./2010 11:49
par Backup
.................

Re: Animation de Sprite / Decoupe

Publié : mar. 26/janv./2010 13:21
par Huitbit
Hello !

Un petit exemle de plus :

http://www.purebasic.fr/french/viewtopi ... grabsprite

Si tu veux quelque chose de très complet, il y a :

http://www.games-creators.org/wiki/Pure ... r_un_RPG2D

(voir Etape n°5: Les sprites et les collisions )
(de Comtois)

Bonne continuation !

Re: Animation de Sprite / Decoupe

Publié : mar. 26/janv./2010 14:14
par Ar-S
Merci les potos,
Super Dobro, merci pour les explications !

Code : Tout sélectionner

le retour n'as pas l'animation de la marche !! :roll: :lol:
les 2 dernières images sont pareil !! 
Voilà ce que c'est que de dormir 3h dans la nuit et de se foutre à toshop après... désolé :D

Merci aussi huibit pour ton exemple, je suis passé à coté dans mes recherches, je vais le "favoriser" aussi.
Flaith, j'avais trouvé ton code mais je ne m'en sortait pas vraiment avec non plus.

Merci encore en tout cas

Re: Animation de Sprite / Decoupe

Publié : mar. 26/janv./2010 14:30
par Ar-S
ClipSprite(0, x, 0, 64,128)
J'ai corrigé ma planche et ai mis les sprites en 150x150, ça marche bien.

sinon dans ton code, y'a une raison particulière pour que tu ais doublé la hauteur dans le ClipSprite ? (128) ou est-ce une bourde ?

Re: Animation de Sprite / Decoupe

Publié : mar. 26/janv./2010 14:46
par Backup
Ar-S a écrit :sinon dans ton code, y'a une raison particulière pour que tu ais doublé la hauteur dans le ClipSprite ? (128) ou est-ce une bourde ?
non c'est une petite erreur de ma part
vu que tu n'avais pas precisé la taille de ton dessin
j'ai tâtonné , et j'ai laisser des que visuellement ça a marché
j'ai pas cherché a comprendre :D

Re: Animation de Sprite / Decoupe

Publié : mar. 26/janv./2010 15:13
par flaith
Ar-S a écrit :...Flaith, j'avais trouvé ton code mais je ne m'en sortait pas vraiment avec non plus...
C'est vrai que c'est pas des plus simple, je vais mettre dans la rubrique jeux, mon code source du jeu 'sans envergure' dès ce soir, il utilise pas mal les clips :mrgreen:

Re: Animation de Sprite / Decoupe

Publié : mar. 26/janv./2010 15:36
par Ar-S
D'avance merci, plus y'a d'exemples, mieux c'est. :D

Je suis en train de reprendre mes dessins, je galère avec photoshop car il me laisse un contour rosé autour des sprites (pour adoucir) du coup lors de l'affichage pb c'est pas beau (contour rose ignoble).. je suis à la limite de reprendre à chaque fois chaque sprite pixel à pixel... doit y avoir une autre méthode.. A moins je ne parte sur une image 256 couleurs mais là je ne peux plus utiliser les calques..

Comment vous procédez vous ?

Re: Animation de Sprite / Decoupe

Publié : mar. 26/janv./2010 16:20
par djes
Mouarf, alors, soit tu utilises les sprites 3d avec couche alpha (ce qui te permet d'éviter les contours foireux et te donne l'avantage des transparences), soit tu détoures, c'est à dire que tu enlèves le rose autour pour n'avoir qu'un bord propre, non transparent. J'espère que tu connais bien photoshop :)

Re: Animation de Sprite / Decoupe

Publié : mar. 26/janv./2010 16:27
par Ar-S
Ouai je connais (assez) bien photoshop, c'est justement le détourage qui est : Facile mais très chiant et très long...

Tite question. En sprite3D justement, si j'ai bien compris on peux utiliser une série d'images (png, tiff) transparente avec simplement le sprite dessus ?
genre : image1,2,3... comme ceci ?

Image

Si c'est le cas y'a même pas à chipoter et passer aux sprite 3D. De plus c'est plus facile de créer 5 images séparées que de gérer une planche ou copier/coller les images au pixel près (Pourquoi les sprites2D ne peuvent pas supporter l'alpha d'ailleurs ?)

Re: Animation de Sprite / Decoupe

Publié : mar. 26/janv./2010 16:57
par djes
A mon avis, les sprites 2D ne devraient plus être utilisés ; c'est une sorte d'héritage du passé, qui était valable du temps de DirectX7. C'est encore valable sur d'autres plateformes aussi.

Pour ta question : oui! Y'a pas à chipoter!!!

PS: j'ai oublié de dire que pour certains usages, les sprites 2D sont encore utiles, notamment les scrollings :)

Re: Animation de Sprite / Decoupe

Publié : mar. 26/janv./2010 16:58
par Ar-S
Un truc me vient à l'esprit ?
Est-ce l'image alpha c'est ce que j'ai dit au dessus ou est-ce que c'est l'inverse de l'image (fond blanc avec intérieur du sprite noir comme avec les softs 3D ?)

Re: Animation de Sprite / Decoupe

Publié : mar. 26/janv./2010 17:04
par djes
Non, c'est bien ça, sous toshop tu enregistres ton image en png 32 ou en tiff 32. Dans les softs 3d tu peux aussi enregistrer ta couche alpha directement, c'est ce que je fais tout le temps et ça fonctionne très bien :)