Forum d'entraide à la création de jeux d'aventure
 
PortailPortail  AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment :
ETB Pokémon Fable Nébuleuse : où ...
Voir le deal

 

 Function pour avoir valeur de la longueur et la largeur d'un character

Aller en bas 
2 participants
AuteurMessage
filoulefilou
Cliqueur Amateur
Cliqueur Amateur
filoulefilou


Nombre de messages : 359

Date d'inscription : 24/05/2010


Function pour avoir valeur de la longueur et la largeur d'un character  Empty
MessageSujet: Function pour avoir valeur de la longueur et la largeur d'un character    Function pour avoir valeur de la longueur et la largeur d'un character  EmptyLun 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 sourire



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];
  
}

Revenir en haut Aller en bas
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


Function pour avoir valeur de la longueur et la largeur d'un character  Empty
MessageSujet: Re: Function pour avoir valeur de la longueur et la largeur d'un character    Function pour avoir valeur de la longueur et la largeur d'un character  EmptyLun 19 Aoû 2019 - 17:27

Merci filoulefilou sourire

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 !
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
filoulefilou
Cliqueur Amateur
Cliqueur Amateur
filoulefilou


Nombre de messages : 359

Date d'inscription : 24/05/2010


Function pour avoir valeur de la longueur et la largeur d'un character  Empty
MessageSujet: Re: Function pour avoir valeur de la longueur et la largeur d'un character    Function pour avoir valeur de la longueur et la largeur d'un character  EmptyVen 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 ?
Revenir en haut Aller en bas
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


Function pour avoir valeur de la longueur et la largeur d'un character  Empty
MessageSujet: Re: Function pour avoir valeur de la longueur et la largeur d'un character    Function pour avoir valeur de la longueur et la largeur d'un character  EmptyVen 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 !
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Contenu sponsorisé





Function pour avoir valeur de la longueur et la largeur d'un character  Empty
MessageSujet: Re: Function pour avoir valeur de la longueur et la largeur d'un character    Function pour avoir valeur de la longueur et la largeur d'un character  Empty

Revenir en haut Aller en bas
 
Function pour avoir valeur de la longueur et la largeur d'un character
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [résolu]Largeur des choix de dialogue dans un TextWindowGUI
» Fusion Character Animator
» Trier des variables par valeur ?
» [Tuto] Afficher la valeur d'une variable
» Character DoTT 320*200

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: CREATION DE JEUX :: Trucs & Astuces, Tutoriaux-
Sauter vers: