filoulefilou Cliqueur Amateur
Nombre de messages : 359
Date d'inscription : 24/05/2010
| Sujet: Function pour avoir valeur de la longueur et la largeur d'un character Lun 19 Aoû 2019 - 10:07 | |
| Bonjour, Je ne sais pas trop si ça pourrait intéresser des gens, ni même si j'ai pas fait cette fonction pour remplacer une déjà bien existante que je ne connaissais malheureusement pas lol ! Enfin voilà,je voulais faire apparaître des éléments sur l'écran, notamment des Overlay , pour faire des FX etc... Ou bien pour lancer des projectiles. Pour faire quelque chose de propre, il me fallait la largeur et la longueur du character, or, quel ne fut pas ma surprise en réalisant que je ne trouvais rien de précis, sinon que je devais passer par plusieurs étapes relou pour calculer la taille de la frame utilisé par le character. J'ai donc crée ces fonctions, et comme je les utilise désormais très souvent, je partage : - Code:
-
function Sprite_width(Character*chars) { ViewFrame *f = Game.GetViewFrame(chars.View, 0, 0); return Game.SpriteWidth[f.Graphic]; }
function Sprite_height(Character*chars) { ViewFrame *f = Game.GetViewFrame(chars.View, 0, 0); return Game.SpriteHeight[f.Graphic]; }
Ainsi écrire Sprite_height(PLAYER) donne la hauteur en px du player selon sa view actuelle, idem pour le Width. Exemple précis, je veux faire apparaître une boule de feu DEVANT mon personnage, je peux donc écrire. - Code:
-
Overlay* BouledeFeu = Overlay.CreateGraphical(Player.x + Sprite_Width(Player), Player.y + (Sprite_Height(Player)/2), BouledeFeu.Graphic, true);
Edit : Petite astuce de Sioux. Créer un entier que l'on nomme Face. Et indiquer qu'il aura la valeur 1 si la FaceDirection = Droite , et -1 si la FaceDirection = Gauche. Ainsi, il suffit tout simplement de coupler (Sprite_width(Player)*Face) pour éviter par exemple que si le personnage regarde vers la gauche, la boule de feu ne sorte de son cul dos Note, j'ai fait de même pour les objets. L’intérêt semble plus limité, cependant, lorsqu'on prend l'habitude d'utiliser les formules du dessus, on se fait vite à l'idée d'utiliser la même démarche pour calculer la taille des objets (pour coder par exemple quelque chose de propre et éviter que nos persos ne traversent les objets au moment de les ramasser, etc.) - Code:
-
function Object_Sprite_width(Object*obj){ return Game.SpriteWidth[obj.Graphic]; }
function Object_Sprite_height(Object*obj){ return Game.SpriteHeight[obj.Graphic]; }
|
|
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Function pour avoir valeur de la longueur et la largeur d'un character Lun 19 Aoû 2019 - 17:27 | |
| Merci filoulefilou Je rajouterais que tu peux même récupérer les dimensions de l'image d'animation en cours en utilisant les propriétés Loop et Frame, comme ça (je définis les fonctions comme méthodes sur les persos) : - Code:
-
function Sprite_width(this Character*) { ViewFrame *f = Game.GetViewFrame(this.View, this.Loop, this.Frame); return Game.SpriteWidth[f.Graphic]; }
function Sprite_width(this Character*) { ViewFrame *f = Game.GetViewFrame(this.View, this.Loop, this.Frame); return Game.SpriteHeight[f.Graphic]; }
// Ailleurs Overlay* BouledeFeu = Overlay.CreateGraphical(player.x + player.Sprite_width(), player.y + (player.Sprite_height()/2), BouledeFeu.Graphic, true); _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
filoulefilou Cliqueur Amateur
Nombre de messages : 359
Date d'inscription : 24/05/2010
| Sujet: Re: Function pour avoir valeur de la longueur et la largeur d'un character Ven 6 Mar 2020 - 14:30 | |
| Je viens de capter un truc dans ce code actuel pour calculer la taille d'un Character, c'est que ma fonction ne prend pas en compte le Scalinglevel du Walkable area, qu'on peut parfois utiliser selon les Room. Ce qui serait cool, ça serait d'ajouter cette valeur pour avoir la taille réelle selon le Scaling du niveau.
Or, je n'ai pas encore trouver une variable du genre Walkable_area_Scaling.Room.ID, quelqu'un sait si cette valeur existe quelque part ? Je sais qu'il existe Character.Scaling, mais je ne sais pas si c'est bien de la même chose dont on parle ? |
|
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Function pour avoir valeur de la longueur et la largeur d'un character Ven 6 Mar 2020 - 16:17 | |
| Ah bien vu, et oui, je pense que Scaling est exactement ce que tu veux Au cas où ça te suffirait pas, tu peux toujours utiliser GetScalingAt pour récupérer le niveau de zoom à un certain point de la pièce (le point sur lequel se trouve ton perso, par exemple) _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
Contenu sponsorisé
| Sujet: Re: Function pour avoir valeur de la longueur et la largeur d'un character | |
| |
|