Communauté

Pourquoi mon heros....
 
Notifications
Retirer tout

[Résolu] Pourquoi mon heros.largeur est pris en compte de deux manières differentes ?

2 Posts
2 Utilisateurs
1 Likes
449 Vu
0
Début du sujet

Bonsoir a tous 🙂

Je suis tout nouveau je commence juste a m'entrainer sur des exercices simples ^^

En gros j'essaye de faire juste glisser mon image de la gauche vers la droite et je voudrais qu'elle revienne vers la gauche dés quelle atteint le bord de l'écran (largeur de l'image prise en compte dans mon calcul) mais je ne sais pas pourquoi dans ma ligne 33 (et j’ai fait des test pour être sure de ce que je dit genre mettre heros.largeur * 15 et voir que mon image sortais tout de même un peu de l'écran avant de revenir) mon heros.largeur est pris en compte comme si c'était heros.largeur = 1 pixel alors que dans la table si je met 2 par exemple ça change bien mon scale.

Je ne sais pas si je me fait bien comprendre étant encore débutant tout ça est nouveau pour moi désolé si ça n'est pas assez claire ^^'

Si celà viens de mes formules ou de ma manière d'écrire mon code si possible essayez de me donner juste un indice merci 🙂

1 Réponse
1

@ketbiwan Dans un programme, le visuel n'a aucune importance. Ce n'est pas parce que tu vas "zoomer" ton image à l'écran que tes calculs vont changer.

Déjà, car je ne suis pas sûr de comprendre ce que tu ne comprends pas, quelques précisions :

1) La largeur de ton image est en pixels. Donc si ton image fait 30 pixels de large, c'est ce nombre de pixels qui doivent être pris en compte lors du calcul pour savoir si ton image déborde à droite de l'écran. Pour obtenir la largeur en pixel d'un image tu peux utiliser la fonction

heros.img:getWidth()

 

2) dans l'API de Love, la fonction draw reçoit des paramètres optionnels "scale x" ou "scale y" qui permettent de "ZOOMER" l'image à l'écran. Mais ce n'est qu'un effet visuel. Il est FORTEMENT déconseillé d'utiliser cette technique, à part pour faire des effets spéciaux, car cela va créer une différence entre ce que le joueur voit et ce que le jeu calcule (ton code, lui continuera à calculer que ton image fait par exemple 30 pixels de large alors qu'à l'écran elle en fera 60... 100... et c'est le bordel pour les collisions).

Donc, à vue de nez, je pense que tu confonds :

- la largeur réelle de l'image en pixel (que tu dois utiliser pour tes calculs, et qui doit être la largeur en pixel réelle, le mieux étant d'utiliser getWidth pour l'obtenir comme ça si tu change de png ton code continue de fonctionner)

- la largeur visible, qu'on peut déformer par scale x et scale y

Dis-moi si j'ai bon.

Ketbiwan Ketbiwan Début du sujet 11/11/2022 11:28

@david merci David pour les précisions ^^ et oui effectivement les valeurs dans le draw et dans la table sont différentes j’ai remis les valeurs en dur donc pour le scale dans le draw et changé dans la table pour mettre la largeur et hauteur exacte de l'image en pixel et du coup ça passe beaucoup mieux dans ma formule. j'avais pas très bien compris comment ça fonctionnais en fait je crois ^^' et merci aussi pour l'astuce 🙂

Répondre
Share:

Dialoguez avec les autres membres de la gamecodeur school.

Accédez maintenant à notre serveur Discord privé : Entraide, Game Jams, Partage de projets, etc.

Vous devez être membre de la Gamecodeur School Premium pour être autorisé à accéder au serveur.