LiXu.pbi : Animation & Particule 2D

Programmation avancée de jeux en PureBasic
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message 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 ?
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: LiXu.pbi : Animation & Particule 2D

Message 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 ;)
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Mesa
Messages : 1097
Inscription : mer. 14/sept./2011 16:59

Re: LiXu.pbi : Animation & Particule 2D

Message 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.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: LiXu.pbi : Animation & Particule 2D

Message 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))
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message 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)
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message 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::
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message 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 ?
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: LiXu.pbi : Animation & Particule 2D

Message 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()
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message par falsam »

blendman a écrit :oui, certainement, ou tout simplement flipper le sprite avec zoomsprite(sprite, -width, height) ou transformsprite()
ça serait trop simple :)
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: LiXu.pbi : Animation & Particule 2D

Message 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
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message par falsam »

Il manquait des média dans le fichier compressé pour utiliser deux des exemples. Mise à jour effectuée.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: LiXu.pbi : Animation & Particule 2D

Message 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 ^^)
Répondre