Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - Erutan

Pages: [1]
1
Graphique / Re : Problème avec getGlobaBound
« le: Juin 04, 2014, 09:28:10 am »
C'est Parfait ça marche, merci  ;D

2
Graphique / Problème avec getGlobaBound
« le: Juin 03, 2014, 06:42:23 pm »
Bonjour,

Je fais mes premiers pas avec la sgml. J'ai un problème avec la fonction getGlobalBounds que j'utilise avec une entité que j'ai créée moi-même :
Voici le constructeur de cette entité (c'est juste un camembert avec une part en moins):

ImageHeros::ImageHeros(int nombreDePoint)
{
   

    m_vertices.setPrimitiveType(sf::TrianglesFan);
    m_vertices.resize(nombreDePoint+1);
   
    m_vertices[0].position = sf::Vector2f(0, 0);
    int pointCourant = 0;
   
    for (float i = 0; i<1.80*M_PI; i+= 1.80*M_PI/nombreDePoint)
    {
        pointCourant++;
        m_vertices[pointCourant].position = sf::Vector2f(50*cosf(i-4*1.80*M_PI/nombreDePoint),50* sinf(i-4*1.80*M_PI/nombreDePoint));
        m_vertices[pointCourant].color = sf::Color::Red;
       
    }
   
   
}
 

et la définition de la classe (qui est presque juste un copier collé du tuto)

class ImageHeros : public sf::Sprite
{
public:
   

    /**
     *   @brief
     */

    ImageHeros(int nombreDePoint);
   
private:
   
    virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const
    {
        // on applique la transformation de l'entité -- on la combine avec celle qui a été passée par l'appelant
        states.transform *= getTransform(); // getTransform() est définie par sf::Transformable
       
        // on applique la texture
        states.texture = &m_texture;
       
        // on peut aussi surcharger states.shader ou states.blendMode si nécessaire
       
        // on dessine le tableau de vertex
        target.draw(m_vertices, states);
    }
   
    sf::VertexArray m_vertices;
    sf::Texture m_texture;
};
 

Mon problème est que la boîte retournée par getGlobalBounds a sa longueur et sa largeur nulle...
A moins que je n'ai pas compris, cette boîte doit être calculée automatiquement, ce n'est pas à nous de l'indiquer ? En l'état actuel je ne peux pas faire de test de collision avec cette entité :S


J'ai également un autre problème : je voudrais que cette entité se tourne vers la souris, j'utilise une matrice 3x3 avec une classe Transform pour faire tourner l'image, il n'y a pas de problème dessus ça fonctionne voici mon code qui est dans la boucle principale (pour afficher l'image du héros):



 /*Cos et Sin de l'angle entre (0,1) et la direction du héros */
        float cosAngle = -(*heros).getDirectionY();
        float sinAngle = (*heros).getDirectionX();
       
        sf::Transform t3(cosAngle, -sinAngle, (*heros).getPositionX(),
                                 sinAngle, cosAngle,  (*heros).getPositionY(),
                                     0,            0,                       1 );
               
        // Clear screen
        window.clear();
       
        // Dessine l'image du héros
        window.draw(*(*jeu).getHeros()->getImage(), t3);
 

L'ennui que j'ai ici c'est que window.draw n'applique pas la transformation à l'entité mais juste à son affichage et je souhaite appliquer la matrice t3 directement à cette entité sans passer par une rotation (car il faudrait calculer l'angle et je trouve ça plus simple comme ça). Mais je n'ai pas trouvé de fonction qui le permette.

Pages: [1]