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

Pages: [1] 2 3 Suivante »
1
Le bouquin SFML Game Development (excellent par ailleurs) explique comment créer un panache de fumée (type réacteur de fusée ou d'avion) que tu dois pouvoir adapter. Tu peux aussi aller voir le Github:https://github.com/SFML/SFML-Game-Development-Book (chapitre 8 ), mais sans avoir lu le bouquin il va te falloir décortiquer un peu le code ^^

2
Graphique / Re : Colision TileMap : personnage coincé
« le: Juillet 01, 2014, 02:59:55 pm »
Apres quelques recherches,  je crois pouvoir t'affirmer que...les zones de collision correspondent très bien au masque :p
Le problème vient d'autre part, il vient du fait que tu testes les collisions avec le point correspondant à l'origine de ton sprite_perso. Or ce point, c'est le coin haut-gauche du sprite. Vérifie toi même, ton code gère les collisions avec ce point la uniquement, ce qui fait que tu as l'impression que les zones de collisions sont au mauvais endroit.
Si tu veux résoudre ce problème, je te conseille de réécrire ton code de façon plus propre, plus claire, moins redondante (parce que certaines actions sont répétées plusieurs fois dans la même frame, comme ta vue qui est réinitialisée 2 ou 3 fois), ca sera plus lisible et plus compréhensible parce que la...ben c'est dégueulasse :p
Et évite les variables globales ;)

3
Graphique / Re : Colision TileMap : personnage coincé
« le: Juin 26, 2014, 08:17:51 pm »
Il me semble que le problème vient de cette ligne :
Citer
if( masque[ int(x/tailleCase) + 8*int(y/tailleCase) ] == 1)
Ton masque fait 8 lignes pour 16 colonnes, donc ce n'est pas 8*int... Que tu dois écrire mais 16*int...
Remplace le 8 par un 16 et ça devrait aller mieux je pense :)

4
Graphique / Re : Collision avec intersects
« le: Juin 21, 2014, 12:27:41 pm »
Si je comprends bien ton code, quand il y a collision, tu testes les positions relatives des deux carrés. Si Player est trop a droite, tu le déplaces vers la gauche, et réciproquement.
Mais quand il y a collision par le haut et le bas, les coordonnées en abscisse de ton Player vérifient quand même les tests de collision des côtés (le if et le premier else if).
En gros, quand il y a collision, ton code vérifie d'abord si l’abscisse d'un des cotés de Player n'est pas comprise entre les abscisses des cotés de l'obstacle. Et comme c'est presque toujours le cas puisque Player est plus petit que l'obstacle, eh bien ton code ne prend jamais en compte la collision par le haut, mais toujours celle par le côté. D'ou le fait que l'ordi décale Player sur le côté à chaque fois.

C'est peut être pas très clair, si tu comprends pas ce que je veux dire, dis le et j'essaierai de reformuler ^^'

edit : d'ailleurs, c'est ce que vient de dire plus clairement Erwsaym ^^'

5
Graphique / Re : Collision Tilemap
« le: Mai 26, 2014, 06:30:27 pm »
Ou et comment as tu défini ton rect2 ? Il correspond bien à la boîte englobante du deuxième mur t'es sur ?

6
Graphique / Re : [help] Deplacer un sf::RectangleShape
« le: Mai 17, 2014, 11:44:13 am »
je te conseille d'aller faire un tour par ici :
http://www.sfml-dev.org/tutorials/2.1/window-events-fr.php
et notamment de lire ce paragraphe (écrit en rouge) :
Citer
Parfois, les gens essayent de réagir directement à l'évènement KeyPressed pour créer des mouvements continus. Or, cela ne produira pas des mouvements continus mais plutôt saccadés : lorsque vous maintenez une touche vous n'obtenez en effet que quelques évènements (souvenez-vous du délai de répétition). Afin d'obtenir des mouvements fluides avec les évènements, vous devez utiliser un booléen mis à true lors de l'évènement KeyPressed et à false lors de l'évènement KeyReleased ; vous pouvez ensuite effectuer des déplacements (indépendamment des évènements) tant que le booléen est à true.
L'autre solution (plus simple) pour produire des movements continus est d'utiliser les entrées temps réel avec sf::Keyboard (voir le tutoriel dédié).
;)

7
Graphique / Re : Collision Tilemap
« le: Mai 13, 2014, 07:20:49 pm »
Je comprends pas trop ta question, mais de toute manière, si tu veux pouvoir passer gestion_clavier() en paramètre, tu dois avoir dans ton code :
sf::Vector2f gestion_clavier()
{
sf::Vector2f monVecteur;
//Du code

return monVecteur;
}

//Plus loin

perso.move(gestion_clavier());

8
Graphique / Re : Collision Tilemap
« le: Mai 12, 2014, 07:03:25 pm »
Je crois que tu n as pas vraiment compris mon code, et c est bien parce que ça risquait d arriver que je te conseillais de chercher tes propres  solutions x)

La ligne
 mouvement.x -= 1;
ne fais pas bouger le personnage, elle donne une valeur a l abscisse du vecteur mouvement.
Ensuite, on vérifie que ce mouvement ne risque pas de provoquer une collision (if virtualSprite...) et enfin on applique ce mouvement au perso avec la ligne
perso.move(mouvement)

La fonction move prend un vector2 en paramètre, est ce que tu as bien modifié ta fonction gestion_clavier() pour qu elle renvoie un vector2f ? Et est ce que tu as bien pensé à mettre un point virgule après ? ^^'

9
Graphique / Re : Collision Tilemap
« le: Mai 11, 2014, 10:10:02 pm »
Nope ce serait
perso.move(gestion_clavier())
 
;)

10
Graphique / Re : Collision Tilemap
« le: Mai 11, 2014, 09:08:44 pm »
Si tu modifies ta fonction gestion_clavier pour qu elle renvoie un vector2f, alors oui c est possible :)

11
Graphique / Re : Collision Tilemap
« le: Mai 11, 2014, 08:29:56 pm »
Je ne lui dit jamais de s'arreter effectivement ^^
regarde ici :
 if(!virtalSprite.intersects(mur.getGlobalBounds()))
            perso.move(mouvement);

ça veut dire ça :
si la position du personnage après déplacement ne provoque pas de collision avec le mur, alors deplace le personnage.Sinon ne le bouge pas. Tout simple :)

oui tu vas pouvoir réutiliser ta fonction gestion clavier, pas de souci :)
de toute facon il y a bcp de choses a ameliorer dans ce code ^^

relis mon code, il n y a qu une seule fois
sf::RenderWindow window(sf::VideoMode(600, 600), "SFML works!");
, c est juste toi qui a foire ton ctrl-v :p

12
Graphique / Re : Collision Tilemap
« le: Mai 11, 2014, 06:49:14 pm »
int main()
{
    sf::RenderWindow window(sf::VideoMode(600, 600), "SFML works!");
    sf::Texture texture;
    if(!texture.loadFromFile("barbare.png", sf::IntRect(0,0,64,64)))
    {
        std::cout << "erreur" << std::endl;
        window.close();
    }
    sf::Sprite perso;
    perso.setTexture(texture);
    sf::Vector2f position(0,0);

    sf::RectangleShape mur;
    mur.setSize(sf::Vector2f(64,64));
    mur.setPosition(300,300);
    mur.setFillColor(sf::Color::Red);

    while(window.isOpen())
    {
        sf::Vector2f mouvement(0,0);
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
            mouvement.y -= 0.1;
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
            mouvement.y += 0.1;
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
            mouvement.x += 0.1;
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
            mouvement.x -= 0.1;

        sf::FloatRect virtalSprite(perso.getPosition().x + mouvement.x,
                                   perso.getPosition().y + mouvement.y,
                                   perso.getGlobalBounds().height,
                                   perso.getGlobalBounds().width);

        if(!virtalSprite.intersects(mur.getGlobalBounds()))
            perso.move(mouvement);
        else
            std::cout << "collision" << std::endl;

        window.clear(sf::Color::Black);
        window.draw(mur);
        window.draw(perso);
        window.display();
    }

    return 0;
}

13
Graphique / Re : Collision Tilemap
« le: Mai 11, 2014, 06:48:58 pm »
Tiens essaye ça :)
Mais je te préviens, ça marche mais ce n'est qu'un code d'exemple, dans un vrai projet il faudrait améliorer beaucoup de choses ^^

Enfin, ca te donne une idée comme ca :)


14
Graphique / Re : Collision Tilemap
« le: Mai 11, 2014, 03:03:09 pm »
Je t ai dit que je n avais pas accès à mon PC pour l instant, je ne peux pas t écrire un programme de démo comme ça depuis mon tel, donc d ici que j ai accès à mon PC, et à moins que quelqu'un d autre ne te ponde le code, tu dois chercher tes propres solutions.
Fais toi un petit projet dans lequel tu te concentres uniquement sur ce problème, relis bien tout ce qui a été dit, car beaucoup de choses utiles ont été dites, et fais tes tests. Avec de la persévérance on finit toujours par réussir :)

15
Graphique / Re : Collision Tilemap
« le: Mai 11, 2014, 02:40:48 pm »
Ne pas faire bouger ton perso me semble être un bon moyen de le rendre immobile :)
Au lieu de faire bouger ton perso directement après après détecter les événements claviers, calcule les coordonnées qu   aurait ton perso si tu le bougeais, et vérifie si ces coordonnées provoquent une collision. Si oui, tu ne fais pas bouger le perso, sinon tu lui appliques le mouvement :)

Pages: [1] 2 3 Suivante »