Afficher plusieurs fois le même sprite avec une condition [SFML]
Dark_another
Messages postés366Date d'inscriptionmardi 28 juin 2016StatutMembreDernière intervention18 mars 2018
-
Modifié le 20 déc. 2017 à 20:57
Whismeril
Messages postés18416Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 1 juin 2023
-
11 août 2019 à 21:41
Bonjour,
Comme indiqué dans le titre, je voudrai afficher plusieurs fois le même sprite avec une condition
Pseudo code:
inclure le fichier "data1"
création de la texture "t_hero"; création du sprite "s_hero";
charger la texture "t_hero" depuis le fichier mémoire "g_data1" ;
appliquer la texture "t_hero" à "s_hero";
si le bouton du milieu de la sourie est pressé, alors :
créer une variable sf::Vector2u qu'on appel "positionSourie"; "positionSourie.x" = position de la sourie en abscisse; "positionSourie.y" = position de la sourie en ordonnée; afficher un nouveau "s_hero" et le positionner là où se trouve la sourie; //la où je bloque
soit
#include "data1"
sf::Texture t_hero;
sf::Sprite s_hero;
t_hero.loadFromMemory(g_data1, sizeof(g_data1));
s_hero.setTexture(t_hero);
if(sf::Mouse::isBottonPressed(sf::Mouse::middle)
{
sf::Vector2u positionSourie;
positionSourie.x = sf::Mouse::getPosition().x;
positionSourie.y = sf::Mouse::getPosition().y;
//le fameux code qui génère une x ième fois le même sprite //je bloque içi
/*le x ième*/ s_hero.setPosition(positionSourie.x, positionSourie.y); //et là
}
Or, je ne vois pas comment afficher plusieurs fois le même sprite. J'ai entendu parler des vertexArray dans SFML mais apparemment il vaut mieux avoir TOUTES les textures dans une même image, et perso je n'aime pas utilisé ce genre de truc. Il y a t'il un autre moyen (si oui, comment ?) ou je dois faire avec vertexArray ?
Merci de vos réponses.
(Dîtes-moi si il est nécessaire de faire un pseudo-code, pour savoir)
Whismeril
Messages postés18416Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 1 juin 2023624 6 août 2018 à 17:54
Bonjour
Quand on exhume un question vielle de presque un an, on essaye
1 d’être sûr de sa réponse, parce que là, Dark_another va recevoir un mail qu’il n’attend probablement plus depuis longtemps, pour un code dont tu n’es même pas sûr,
Bonjour, même si cela date un peu, ça peut aider les prochains.
Il me semble que l'on peut afficher autant de fois un sprite qu'on le veut.
imaginons :
sprite.setPosition(sf::Vector2f{0, 0});
sprite.draw(window);
sprite.setPosition(sf::Vector2f{250, 250});
sprite.draw(window);
/* Va afficher le sprite deux fois a deux position différentes, je n'ai pas d'IDE de dispo donc je ne sais pas si les fonctions setPosition et draw sont bien orthographiées *\
amzounslideslide
Messages postés5Date d'inscriptionsamedi 10 août 2019StatutMembreDernière intervention13 août 2019 10 août 2019 à 18:36
Salut
Utiliser une série de sprite n'est pas du tout performant pour le dessin d'une map, ça a pour conséquence de multiplier les appels a draw, qui est assez lourd.
Regarde du coté du vertexarray, ca permet de rentrer toutes les données de ta map dans un tableau, et de tous dessiner d'un seul coup.
ps: un vertexarray nécessite d'avoir toutes les tiles a dessiner sur la même texture.