Page 1 sur 1

[resolu] Loadsprite et Transparance ?

Publié : lun. 25/janv./2010 13:58
par Ar-S
je viens de voire dans la doc que pour rendre une couleur transparante dans un sprite, il faut utiliser un sprite3D..
Ni a t il pas un moyen de charger un sprite (loadsprite) image en png (24) et d'indiquer la couleur à rendre transparente ??
En gros j'ai ma palette Image et je voudrais rendre la couleur ff00ff transparante afin de rendre cette palette arrondie sur les cotés.

J'ai tout d'abord utilisé

Code : Tout sélectionner

If LoadSprite(0,"img/palette1ff00ff.png",#PB_Sprite_AlphaBlending)
puis j'ai essayé de l'afficher

Code : Tout sélectionner

DisplayTransparentSprite(0,Palette(1)\PosX ,Palette(1)\PosY ) ; affiche le sprite  raquette au coordonées modifié par les touches
  TransparentSpriteColor(0,$FF00FF)
Sans résultat évidement vu que qu'il fallait passer par DisplaySprite3D (et non DisplaySprite), donc faut convertir le sprite en sprite3D

Tout ça pour une simple palette ?? Ni a t-il pas plus simple pour afficher l'image de la raquette ?
Du coup une autre question me vient à l'esprit..
- Peut-il y avoir interaction entre sprite et sprite3D (ma balle est un simple sprite) ou faut il convertir tous les sprites en sprite3D ?

Si vous voulez le code complet je l'ajoute mais j'ai repris à peu de chose prés mon code ICI
j'ai juste changé

Code : Tout sélectionner

CreateSprite(0, LPalette, HPalette)
  If StartDrawing(SpriteOutput(0))
      Box(0, 0, LPalette, HPalette, RGB(55, 100, 255)) ; palette
    StopDrawing() 
  EndIf
en

Code : Tout sélectionner

If LoadSprite(0,"img/palette1ff00ff.png",#PB_Sprite_AlphaBlending)
Else
  MessageRequester(" ","erreur loadsprite")
  CreateSprite(0, LPalette, HPalette)
  If StartDrawing(SpriteOutput(0))
      Box(0, 0, LPalette, HPalette, RGB(55, 100, 255)) ; palette
    StopDrawing() 
  EndIf
EndIf
je bloque coté displaysprite (3d) du coup.
Avant de poursuivre, j'aurai aimer vous entendre à ce sujet.

Re: Loadsprite et Transparance ?

Publié : lun. 25/janv./2010 14:20
par Le Soldat Inconnu
Regarde TransparentSpriteColor(

Re: Loadsprite et Transparance ?

Publié : lun. 25/janv./2010 14:21
par Backup
tu peux mélanger sans problemes les sprites 3D et les autres...
bien que.... mieux vaut tout mettre en 3D

c'est vrai que dans le tuto j'utilise les sprites "normaux" mais
passer en sprite 3D ne demande qu'une ligne de plus....

façon de creer un sprite a l'ancienne

Code : Tout sélectionner


 ; ******* creation d'un sprite raquette************
If CreateSprite (#raquette,128,16) ; on creer un sprite vide (une cellule) de 32 par 32 et on lui donne le numero 1
    StartDrawing ( SpriteOutput (#raquette) ) ; on va dessiner dedans !
        Box (1,1,128, 16,RGB (0,255,0)) ; on dessine un cercle rouge, ce sera la balle
    StopDrawing ()
EndIf
    ; ***********************************************


façon de creer le meme sprite en 3D
; ne pas oublier
InitSprite3D() ; ne pas oublier
;et ajouter #raquette3D
;dans l'enumeration

; ******* creation d'un sprite 3D raquette************
If CreateSprite (#raquette,128,16,#PB_Sprite_Texture) ; on creer un sprite vide (une cellule) de 32 par 32 et on lui donne le numero 1
StartDrawing ( SpriteOutput (#raquette) ) ; on va dessiner dedans !
Box (1,1,128, 16,RGB (0,255,0)) ; on dessine un cercle rouge, ce sera la balle
StopDrawing ()
EndIf
Resultat = CreateSprite3D(#raquette3D, #raquette)
; ***********************************************
ça ne coute pas grand chose pour acceder a tout les avantage de la 3D
je pense aux rotations par exemple ;)

Re: Loadsprite et Transparance ?

Publié : lun. 25/janv./2010 14:35
par Ar-S
Merci à vous deux.
Avec le TransparentSpriteColor j'ai pu faire ce que je voulais, même si le contour reste un poil rosé mais ça vient de mon image. je l'ai refait c'est nikel !

Du coup c'est plus simple que je ne pensais :)

@Dobro,
Tu as raison, ce n'est pas grand chose pour accéder a tous les avantages de la 3D mais je préfère pour le moment assimiler la 2D. La suite viendra bien assez tôt (même si les 2 sont parentés)
J'avoue avoir vraiment hâte d'être à l'aise la dedans pour me permettre quelques délires. Du jeu au logiciel avec interface 2D/3D, le potentiel est grand !
Me voilà tout euphorique :mrgreen:

Re: [resolu] Loadsprite et Transparance ?

Publié : lun. 25/janv./2010 16:30
par Le Soldat Inconnu
La 3D permet d'aller bien plus niveau vitesse d'affichage aussi. Si tu vois que ton FPS sature, il faut faire le saut vers la 3D.

Moi je l'utilise aussi pour le coté esthétique car il y a le support de la couche alpha