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 - Sozary

Pages: « Précédente 1 [2]
16
Graphique / Déplacement sprite avec animation controlée
« le: Avril 07, 2016, 11:47:53 pm »
Bonsoir, je sais que des sujets similaires ont déjà été résolu, mais je n'ai pas trouvé mon bonheur.
Je m'explique: sur cette vidéo (regarder la 3 secondes environ a partir de 15 seconde), le personnage marche de 16 pixels en 16 pixels avec une animation bien gérée dessus. Comment décomposer ce mouvement avec sfml? J'ai une boucle de rendu qui ressemble à ça:
Clock clock;
Time timeSinceLastUpdate;
timeSinceLastUpdate = Time::Zero;
int animationCounter = 0;
// cout << m_scripts[2].instructions[1].offset << endl;  --> fonctionne
while (m_window.isOpen())
{
processEvent();

timeSinceLastUpdate += clock.restart();


while (timeSinceLastUpdate > TimePerFrame)
{

timeSinceLastUpdate -= TimePerFrame;
processEvent();
update(TimePerFrame);
}

render();
}

Merci d'avance!

17
Général / Re : [..] probleme d'angles!
« le: Novembre 16, 2015, 11:27:54 am »
Résolu

18
Général / [R] probleme d'angles!
« le: Novembre 15, 2015, 08:58:52 pm »
Bonsoir.

Je réalise un petit code afin d'obtenir un résultat équivalent à celui-ci: https://www.youtube.com/watch?v=LrEvoKI07Ww&feature=youtu.be&t=7m36s

Je me suis aidé d'une petite formule pour faire une rotation autour d'un point:

Citer
X = x - a
Y = y - b
xBis = a + X * cos(angle) - Y * sin(angle)
yBis = b + X * sin(angle) + Y * cos(angle)

Cela marche très bien sur GéoGebra, mais moins dans mon programme...
Dans celui-ci, j'utilise le centre de mon personnage comme point de rotation, et le pointeur de la souris comme point auquel appliquer la rotation.

Voyez le résultat par vous même:
(click to show/hide)

L'angle n'est jamais bon entre les lignes...
Merci d'avance pour toute aide!

19
Général / Re : Problème config code blocks
« le: Septembre 21, 2015, 05:18:33 pm »
J'avais eu aussi ce genre de problème, ça veut dire que tu as mal configuré le build...
Pour t'aider je te passe un projet déjà configuré avec le code d'exemple. Si tu veux déplacer le dossier SFML joint avec le dossier, n'oublie pas de modifier le build option.

Tiens: http://sozary.alwaysdata.net/Projet.rar

20
Général / Re : Problème config code blocks
« le: Septembre 21, 2015, 12:56:16 pm »
Dans Search Directory->Linker dans build option->Test_Sfml, il n y as rien, tu dois dire où est ton fichier lib

21
Général / Re : afficher un sprite et une view
« le: Septembre 20, 2015, 10:13:04 pm »
En effet!
Merci!

22
Général / Re : afficher un sprite et une view
« le: Septembre 20, 2015, 06:55:37 pm »
oui! Mais si j'enlève le windows.setView(view) le perso est bien affiché et la carte aussi, mais la carte n est pas adaptée du coup

23
Général / [R]afficher un sprite et une view
« le: Septembre 20, 2015, 02:00:48 pm »
Bonjour, je voudrais utiliser un sprite et une view, mais les deux ne sembles pas compatibles:
        window.clear();

        window.draw(carte);
        window.setView(view);
        window.draw(animatedSprite);



        window.display();

Le sprite ne s'affiche pas!
Merci d'avance

24
Général / Re : Probleme Tilemap
« le: Septembre 20, 2015, 09:58:02 am »
Si bien sûr!
Tenez:
#include <SFML/Graphics.hpp>
#include <string>
#include <iostream>
#include <vector>
#include <fstream>


using namespace std;

class TileMap: public sf::Drawable, public sf::Transformable
{
    public:
        bool chargeCarte(const string& str)
        {
            ifstream file(str.c_str());
            if(!file)
                return false;
            file>>m_TX;
            file>>m_TY;
            m_carte.resize(m_TY);
            for (int i = 0; i < m_TY; ++i)
            {
                m_carte[i].resize(m_TX);
                for (int j = 0; j < m_TX; ++j)
                    m_carte[i][j].resize(2);
            }
            for (int i(0);i<m_TY;++i){
                for (int j(0);j<m_TX;++j)
                {
                    file>>m_carte[i][j][0];
                    file>>m_carte[i][j][1];
                    //cout<<m_carte[i][j][0]<<","<<m_carte[i][j][1]<<endl;
                }cout<<endl;}
            m_empl=str;
            file.close();
            return true;
        }
        bool load(const string& tileset, sf::Vector2u tileSize)
        {
            if(!m_tileset_fond.loadFromFile(tileset))
                return false;
            m_vertices_fond.setPrimitiveType(sf::Quads);
            m_vertices_fond.resize(m_TX*m_TY*4);

            for(unsigned int i=0;i<m_TX;++i)
            {
                for(unsigned int j=0;j<m_TY;++j)
                {
                    int tu,tv;
                    assignTexture(m_carte[i][j][0],&tu,&tv);
                    sf::Vertex* quad = &m_vertices_fond[(i + j * m_TX) * 4];


                    quad[0].position = sf::Vector2f(i * tileSize.x, j * tileSize.y);
                    quad[1].position = sf::Vector2f((i + 1) * tileSize.x, j * tileSize.y);
                    quad[2].position = sf::Vector2f((i + 1) * tileSize.x, (j + 1) * tileSize.y);
                    quad[3].position = sf::Vector2f(i * tileSize.x, (j + 1) * tileSize.y);

                    quad[0].texCoords = sf::Vector2f(tu * tileSize.x, tv * tileSize.y);
                    quad[1].texCoords = sf::Vector2f((tu + 1) * tileSize.x, tv * tileSize.y);
                    quad[2].texCoords = sf::Vector2f((tu + 1) * tileSize.x, (tv + 1) * tileSize.y);
                    quad[3].texCoords = sf::Vector2f(tu * tileSize.x, (tv + 1) * tileSize.y);


                }

            }

            m_vertices_devant.setPrimitiveType(sf::Quads);
            m_vertices_devant.resize(m_TX*m_TY*4);

            for(unsigned int i=0;i<m_TX;++i)
            {
                for(unsigned int j=0;j<m_TY;++j)
                {
                    int tu,tv;
                    assignTexture(m_carte[i][j][1],&tu,&tv);
                    sf::Vertex* quad = &m_vertices_devant[(i + j * m_TX) * 4];


                    quad[0].position = sf::Vector2f(i * tileSize.x, j * tileSize.y);
                    quad[1].position = sf::Vector2f((i + 1) * tileSize.x, j * tileSize.y);
                    quad[2].position = sf::Vector2f((i + 1) * tileSize.x, (j + 1) * tileSize.y);
                    quad[3].position = sf::Vector2f(i * tileSize.x, (j + 1) * tileSize.y);

                    quad[0].texCoords = sf::Vector2f(tu * tileSize.x, tv * tileSize.y);
                    quad[1].texCoords = sf::Vector2f((tu + 1) * tileSize.x, tv * tileSize.y);
                    quad[2].texCoords = sf::Vector2f((tu + 1) * tileSize.x, (tv + 1) * tileSize.y);
                    quad[3].texCoords = sf::Vector2f(tu * tileSize.x, (tv + 1) * tileSize.y);


                }

            }
            return true;
        }
    private:
        void assignTexture(int tile,int *tu,int *tv)
        {
            switch(tile)
            {
                case 0:*tu=1;*tv=15;break;
                case 1:*tu=0;*tv=0;break;
                case 2:*tu=0;*tv=1;break;
                case 3:*tu=0;*tv=2;break;
                case 4:*tu=0;*tv=3;break;
                case 5:*tu=0;*tv=4;break;
                case 6:*tu=1;*tv=0;break;
                case 7:*tu=1;*tv=1;break;
                case 8:*tu=1;*tv=2;break;
                case 9:*tu=1;*tv=3;break;
                case 10:*tu=1;*tv=4;break;
                case 11:*tu=2;*tv=0;break;
                case 12:*tu=2;*tv=1;break;
                case 13:*tu=2;*tv=2;break;
                case 14:*tu=2;*tv=3;break;
                case 15:*tu=2;*tv=4;break;
                case 16:*tu=3;*tv=0;break;
                case 17:*tu=3;*tv=1;break;
                case 18:*tu=3;*tv=2;break;
                case 19:*tu=3;*tv=3;break;
                case 20:*tu=3;*tv=4;break;
                case 21:*tu=4;*tv=0;break;
                case 22:*tu=4;*tv=1;break;
                case 23:*tu=4;*tv=2;break;
                case 24:*tu=4;*tv=3;break;
                case 25:*tu=4;*tv=4;break;
                case 26:*tu=4;*tv=5;break;
                case 27:*tu=0;*tv=21;break;
                case 28:*tu=0;*tv=22;break;
                case 29:*tu=0;*tv=23;break;
                case 30:*tu=1;*tv=21;break;
                case 31:*tu=2;*tv=21;break;


            }
        }
        virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const
        {

            states.transform *= getTransform();
            states.texture = &m_tileset_fond;
            target.draw(m_vertices_fond, states);

        }
        sf::VertexArray m_vertices_fond;
        sf::Texture m_tileset_fond;
        sf::VertexArray m_vertices_devant;
        sf::Texture m_tileset_devant;
        vector< vector< vector<int> > > m_carte;
        string m_empl;
        int m_TX;
        int m_TY;

};


int main()
{

    sf::RenderWindow window(sf::VideoMode(800,600),"Test");
    TileMap carte;
    carte.chargeCarte("carte1.txt");
    carte.load("tileset1.png",sf::Vector2u(16,16));


    while(window.isOpen())
    {
        sf::Event event;
        while(window.pollEvent(event))
        {
            switch(event.type)
            {

                case sf::Event::Closed:
                    window.close();
                    break;



            }

        }

        window.clear(sf::Color::Black);
        window.draw(carte);
        window.display();

    }



    return 0;
}

25
Général / Re : Probleme Tilemap
« le: Septembre 19, 2015, 08:47:30 pm »
Ah oui, déjà ça ^^!

Le problème c'est que cela ne fonctionne toujours pas: le programme refuse de se lancer et bloque!
revoici le lien mis à jour : http://sozary.alwaysdata.net/Petite%20carte%20pkm.rar

26
Général / [R] Probleme Tilemap
« le: Septembre 19, 2015, 08:14:56 pm »
Bonjour!
Je suis nouveau et j'ai suivi les tutoriels du site.
J'ai donc tenté de créer un Tilemap comme ici.
Sauf que le tilset que j'utilise comprte des éléments à fond transparent (comme un arbre).
J'ai donc fais un tableau 3D pour les éléments de fond et les éléments devant.
Cependant la fonction draw semble ne pas fonctionner!
Voici le lien du projet: http://sozary.alwaysdata.net/Petite%20carte%20pkm.rar

Merci d'avance

Pages: « Précédente 1 [2]