Page 4 sur 5

Re: LiXu.pbi : Animation & Particule 2D

Publié : jeu. 02/juil./2015 15:40
par falsam
blendman a écrit :Mais ça ne marche pas avec la 5.31 x64, uniquement en x86 ^^.
J'ai testé l'ensemble des exemples de lixu 1.24 (windows8) en x86 et x64 et je ne rencontre pas de souci.

Tu en as ou j'ai mal compris ?

Re: LiXu.pbi : Animation & Particule 2D

Publié : jeu. 02/juil./2015 16:17
par falsam
Je vais maintenant m'attarder sur une amélioration qui me démange depuis longtemps.

SpriteUpdateAnimation(Sprite) permet de jouer une animation.

J'ai par exemple ce sprite sheet qui me permet d'animer vers la droite
Image
Mais pas vers la gauche.

Je souhaite modifier SpriteUpdateAnimation(Sprite) en SpriteUpdateAnimation(Sprite, Flip)
Flip prend la valeur #False ou #True.

Actuellement avec cette fonction, LiXu sait actuellement quelle est l'animation en cours et par conséquence les dimensions du SpriteSheet et les dimensions d'une frame sont connus.

On devrait donc pouvoir obtenir une nouvelle image ou chaque frame reste dans l'ordre mais inversée Horizontalement et/ou Verticalement.

La question qui se pose est : Est ce que ce n'est pas trop lourd à gérer et ne vaut il pas mieux d'utiliser un outil pour créer ce sprite sheet inversé.

PS : A ce propos Blendman, ton Sprite Sheet maker ne fonctionne pas et freeze parfois sous windows 8.

Re: LiXu.pbi : Animation & Particule 2D

Publié : jeu. 02/juil./2015 16:41
par blendman
falsam a écrit :Je souhaite modifier SpriteUpdateAnimation(Sprite) en SpriteUpdateAnimation(Sprite, Flip)
Flip prend la valeur #False ou #True.
c'est une excellente idée ;)
La question qui se pose est : Est ce que ce n'est pas trop lourd à gérer et ne vaut il pas mieux d'utiliser un outil pour créer ce sprite sheet inversé.
Comme je te disais, on peut utiliser Transformsprite() ou zoomsprite(sprite,-width, height), mais ça ne fonctionne qu'avec pb 5.3 x86, pas en x64 ;) (je n'ai pas de soucis avec lixu, car pour le moment, on n'utilise pas de flipsprite() en transformsprite ou zoomsprite ;))
PS : A ce propos Blendman, ton Sprite Sheet maker ne fonctionne pas et freeze parfois sous windows 8.
ça fait longtemps que je ne l'ai pas testé, je vais essayer de trouver un peu de temps pour jeter un oeil ;)

Re: LiXu.pbi : Animation & Particule 2D

Publié : jeu. 02/juil./2015 16:45
par falsam
blendman a écrit :c'est une excellente idée
Oui mais il faut que ça fonctionne avec n'importe quel type de sprite sheet. Horizontale mais aussi verticales ou les deux.

Re: LiXu.pbi : Animation & Particule 2D

Publié : ven. 03/juil./2015 8:58
par Mesa
Question bête, si un personnage tient un objet dans la main droite, après un effet miroir, il le tient dans la main gauche, non ?

M.

Re: LiXu.pbi : Animation & Particule 2D

Publié : ven. 03/juil./2015 9:20
par blendman
Mesa a écrit :Question bête, si un personnage tient un objet dans la main droite, après un effet miroir, il le tient dans la main gauche, non ?
oui
, sauf si tu as prévu de séparer l'objet du sprite personnage, auquel cas, si vraiment c'est important, tu lui mets l'objet dans la main droite lorsque tu inverses ^^.
il faut que ça fonctionne avec n'importe quel type de sprite sheet. Horizontale mais aussi verticales ou les deux.
POur ça, tu devrais gérer des paramètres NbTileW et NbTileH = la taille de chaque "sous-image" de ton animation.
Par exemple, si ton spritesheet fait : 128 * 32, avec 4 image de w= 32, tu indiques un NbtileW = 4 (c'est plus simple d'indiquer le nombre de'image dans ton animation/spritesheet) et NbTileH = 1.
Et tu sais que tu dois inverser 4 fois des image en 32 (128/NBtileW) * 32 (32/NbTileh))

Re: LiXu.pbi : Animation & Particule 2D

Publié : ven. 03/juil./2015 10:39
par falsam
Petite démo en ligne avec le SpriteSheet que j'ai montré dans un message précédent. (Flèches gauche et droite)

Re: LiXu.pbi : Animation & Particule 2D

Publié : ven. 03/juil./2015 10:49
par falsam
UseModule : Un rappel ou plutôt un petit truc sur les modules.

Si après

Code : Tout sélectionner

IncludeFile "lixu.pbi"
vous indiquez que vous allez utiliser lixu avec

Code : Tout sélectionner

UseModule lixu
alors il ne sera plus nécessaire de faire précéder les fonctions de lixu par lixu::

Re: LiXu.pbi : Animation & Particule 2D

Publié : ven. 03/juil./2015 10:59
par falsam
blendman a écrit :POur ça, tu devrais gérer des paramètres NbTileW et NbTileH = la taille de chaque "sous-image" de ton animation. .... etc
Prendre l'image instantanée de l'animation et la fliper n'est pas plus simple à mettre en oeuvre ?

Re: LiXu.pbi : Animation & Particule 2D

Publié : ven. 03/juil./2015 11:20
par blendman
falsam a écrit :
blendman a écrit :POur ça, tu devrais gérer des paramètres NbTileW et NbTileH = la taille de chaque "sous-image" de ton animation. .... etc
Prendre l'image instantanée de l'animation et la fliper n'est pas plus simple à mettre en oeuvre ?
oui, certainement, ou tout simplement flipper le sprite avec zoomsprite(sprite, -width, height) ou transformsprite()

Re: LiXu.pbi : Animation & Particule 2D

Publié : ven. 03/juil./2015 11:36
par falsam
blendman a écrit :oui, certainement, ou tout simplement flipper le sprite avec zoomsprite(sprite, -width, height) ou transformsprite()
ça serait trop simple :)

Re: LiXu.pbi : Animation & Particule 2D

Publié : ven. 03/juil./2015 22:26
par falsam
J'ai ajouté deux exemples simples dans le fichier compressé (Voir premier message) :

lixu - 9 Horizontal Flip.pb
lixu - 9 Vertical Flip.pb

Le code de LiXu ne change pas.

Re: LiXu.pbi : Animation & Particule 2D

Publié : sam. 04/juil./2015 8:47
par blendman
falsam a écrit :
blendman a écrit :oui, certainement, ou tout simplement flipper le sprite avec zoomsprite(sprite, -width, height) ou transformsprite()
ça serait trop simple :)
Ben, c'est simple ^^

Flip horizontal du sprite avec TransformSprite() :
TransformSprite(0, x,y,x-w,y,x-w,y+h,x,y+h)

Flip vertical du sprite :
TransformSprite(0, x,y,x+w,y,x+w,y-h,x,y-h)


Pour que ça fonctionne, il faut cocher openGL dans les options du compilateur.
Le flip horizontal :

Code : Tout sélectionner

InitSprite()
screenwidth = 1024
screenheight = 768
OpenWindow(0, 0, 0, screenwidth, screenheight, "Antialiased Line Demo", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If OpenWindowedScreen(WindowID(0),0,0,screenwidth, screenheight)=0
  MessageRequester("Error", "Can't Open Screen!", 0)
  End
EndIf

 ;Sprite Cible0
CreateSprite(0,100,100)
StartDrawing(SpriteOutput(0))
Circle(50,50,49,RGB(255,255,0))
Circle(50,50,40,RGB(0,255,0))
Circle(50,50,30,RGB(0,255,255))
Circle(50,50,20,RGB(0,0,255))
Circle(50,50,10,RGB(255,0,0))
Circle(0,0,50,RGB(255,255,255))
StopDrawing()

 ;Sprite Cible1
CopySprite(0, 1)


Repeat 
  
  Repeat
    
    event = WaitWindowEvent(1)
    
  Until event = 0 Or event = #PB_Event_CloseWindow
    
  ClearScreen(RGB(0,0,0))
  DisplaySprite(0, 200, 160)
  TransformSprite(0, 200,160,100,160,100,260,200,260)

  DisplaySprite(1, 400, 160)
  ZoomSprite(1,100,100)
  
  FlipBuffers()
  
Until event = #PB_Event_CloseWindow

Re: LiXu.pbi : Animation & Particule 2D

Publié : sam. 04/juil./2015 11:30
par falsam
Il manquait des média dans le fichier compressé pour utiliser deux des exemples. Mise à jour effectuée.

Re: LiXu.pbi : Animation & Particule 2D

Publié : sam. 04/juil./2015 12:31
par blendman
Cool merci ;)

Sinon, tu connais ça :
http://www.purebasic.fr/english/viewtop ... 0d#p447248

ça pourrait t'intéresser en complément avec ton module (eddy est français, tu peux le contacter si tu veux utiliser son module ^^)