[auto resolu] Sprite3D & #PB_Sprite_AlphaBlending
Publié : mar. 26/janv./2010 19:08
Bon, pour gérer au mieux l'animation de sprite et surtout le détourage, je passe au sprite3D.
Enfin je passe c'est un bien grand mot... Vraiment je trouve tout ça pas pratique !
- A ce que j'ai compris il faut créer un sprite2D puis le transformer en sprite3D (va comprendre charles...)
- J'ai donc créé des images séparées comme me l'a conseillé Dobro, toutes font 150x150.
- Les images sont au format PNG, avec un fond transparent.
Avant de créer une animation, j'aimerai déjà voir mon sprite3D à l'ecran hors là, rien et je ne vois pas pourquoi, j'ai suivi vos examples et la doc.
cette dernière annonce
l'écran n'affiche rien, nib. Et le débuggeur reste muet comme une carpe.
Tout l'après midi à me prendre la tête la dessus et rien, ça commence à me gonfler. Autant c'est jouissif quand on arrive à quelque chose, autant on a envie de péter l'écran avec le clavier quand ça avance pas.
J'ai aussi redimensionné mes images en 128x128 (au lieu de 150x150) vu que la doc dit que c'est préférable d'utiliser des textures 16x16 32x32 etc...
Désolé de vous gonfler encore avec ça mais la je craque.
L'image m1.png :
Enfin je passe c'est un bien grand mot... Vraiment je trouve tout ça pas pratique !
- A ce que j'ai compris il faut créer un sprite2D puis le transformer en sprite3D (va comprendre charles...)
- J'ai donc créé des images séparées comme me l'a conseillé Dobro, toutes font 150x150.
- Les images sont au format PNG, avec un fond transparent.
Avant de créer une animation, j'aimerai déjà voir mon sprite3D à l'ecran hors là, rien et je ne vois pas pourquoi, j'ai suivi vos examples et la doc.
cette dernière annonce
Le soucis est que si je fais : DisplaySprite3D(#egg,jojo(1)\PosX ,jojo(1)\PosY,#PB_Sprite_AlphaBlending)Pour afficher un sprite avec le support de l'alpha-channel, le sprite qui a servi à la création du sprite 3D doit avoir l'option #PB_Sprite_AlphaBlending.
l'écran n'affiche rien, nib. Et le débuggeur reste muet comme une carpe.
Tout l'après midi à me prendre la tête la dessus et rien, ça commence à me gonfler. Autant c'est jouissif quand on arrive à quelque chose, autant on a envie de péter l'écran avec le clavier quand ça avance pas.
J'ai aussi redimensionné mes images en 128x128 (au lieu de 150x150) vu que la doc dit que c'est préférable d'utiliser des textures 16x16 32x32 etc...
Désolé de vous gonfler encore avec ça mais la je craque.
L'image m1.png :

Code : Tout sélectionner
; Initiation au Sprite3D
InitSprite() : InitKeyboard() : InitSprite3D()
UsePNGImageDecoder()
Enumeration
#egg
EndEnumeration
;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
image.l
Vitesse.l
EndStructure
Global Dim jojo.jojo(1)
jojo(1)\PosX=0
jojo(1)\PosY=Hscreen-128
jojo(1)\Vitesse=7
;Deplacement vers la droite ; animation : image 0.1.2.3.4
LoadSprite(0,"img/m1.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
LoadSprite(1,"img/m2.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
LoadSprite(2,"img/m3.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
LoadSprite(3,"img/m4.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
LoadSprite(4,"img/m5.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
;Images Saut ; animation : image 0.5.6.7
;LoadSprite(5,"img/s1.png",#PB_Sprite_Alpha) ; commenté car identique à m1.png
LoadSprite(5,"img/s2.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
LoadSprite(6,"img/s3.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
LoadSprite(7,"img/s4.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
CreateSprite3D(#egg,0)
;Sprite3DQuality(1)
;{- Event loop
Repeat
Event= WindowEvent ()
Delay (2)
ExamineKeyboard ()
If KeyboardPushed(#PB_Key_Left)
jojo(1)\PosX=jojo(1)\PosX-jojo(1)\Vitesse
If jojo(1)\PosX<0
jojo(1)\PosX=0
EndIf
EndIf
If KeyboardPushed(#PB_Key_Right)
jojo(1)\PosX=jojo(1)\PosX+jojo(1)\Vitesse
If jojo(1)\PosX>Lscreen-128
jojo(1)\PosX=Lscreen-128
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
;---AFFICHAGE----
If Start3D()
DisplaySprite3D(#egg,jojo(1)\PosX ,jojo(1)\PosY,255)
Stop3D()
Else
Debug "erreur start3D"
EndIf
FlipBuffers()
ClearScreen(RGB(0, 0, 0))
ForEver