Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Random + collision  (Lu 3661 fois)

0 Membres et 1 Invité sur ce sujet

Deathtreak

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
    • E-mail
Random + collision
« le: Novembre 06, 2016, 04:43:51 pm »
Bonjour/Bonsoir , encore moi (et oui)
Pour les besoin de mon projet il faut que je fasse spawn un tank aléatoirement sur un terrain qui n'est en aucun cas plat , il faut donc que lorsque les coordonner aléatoire du tank sont dans la texture , elle soit recalculer pour que le tank soit juste sur le terrain et non dedans.
Je ne c'est pas comment faire , est ce qu'il y a une histoire de détection de pixel ou autre ?
Merci de votre lectue :)
« Modifié: Novembre 09, 2016, 01:51:53 pm par Deathtreak »

brunnerant

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
    • E-mail
Re : Random + collision
« Réponse #1 le: Novembre 09, 2016, 09:41:09 pm »
Si je comprend bien tu travaille en 3d (faudrait être un peu plus précis). Tu devrais donc normalement stocker ton terrain dans un objet, ce qui devrait te permettre de retrouver la hauteur de ce dernier en un point donné.
Pour placer le tank, tu le place aléatoirement en 2d (vue du haut), puis tu retrouve la hauteur à l'endroit où tu l'as placé, et ça devrait jouer.
J'espère que j'ai réussi à comprendre ce que tu demandais, bonne journée !

Deathtreak

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
    • E-mail
Re : Random + collision
« Réponse #2 le: Novembre 10, 2016, 06:43:10 pm »
Bonjour
Désoler j'ai mal préciser , je suis en langage C et c'est un jeu en 2D
Mon problème est que j'ai plusieurs images
Le ciel en arriéré plan ensuite vient le terrain puis enfin le tank
Il faut que le tank apparaisse de manière aléatoire sur le terrain , pour l'axe des X sa va mais celui des Y beaucoup
moins , je cherche a savoir comment faire descendre le tank sur l'axe des Y et qu'il détecte les pixels du terrain pour qu'il y ai une collision et qu'il ne descende pas plus bas .
En soi je c'est comment le faire descendre , mais pas comment "détecter" les pixels du terrain ni comment faire pour exploiter le résultat ,
En gros un truc du genre : Le tank descend sur l'axe Y , si il n'y a pas de pixel du terrain il descend toujours , si il y a des pixels du terrain alors je m’arrête

brunnerant

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
    • E-mail
Re : Random + collision
« Réponse #3 le: Novembre 10, 2016, 07:19:56 pm »
Oui, ce que tu as proposé me parait fonctionner. Après, cela dépend de comment ton jeu fonctionne. Est-ce que le terrain est stocké en tant que tableau de points ? Ou est ce qu'il est simplement stocké dans une texture, et les pixels transparent sont considérés comme "de l'air" ?

Deathtreak

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
    • E-mail
Re : Random + collision
« Réponse #4 le: Novembre 10, 2016, 07:25:51 pm »
C'est une texture , enfin j'ai défini une image un sprite et une texture , car il y aura des dégradation plus tard .
Pour ce qui est des pixels transparents je m'en sort pas trop , mon image comporte une partie avec le terrain et le reste de l'image est blanche .
Ce que j'ai proposé je ne c'est pas entièrement le faire comme je l'ai expliquer. Je ne c'est pas avec quoi exploiter tout sa , j'ai le raisonnement mais pas les outils

brunnerant

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
    • E-mail
Re : Random + collision
« Réponse #5 le: Novembre 10, 2016, 08:34:51 pm »
Un truc du genre....  :P

sf::Image terrain = ...;

unsigned int hauteurMaxDuTerrain = ...;

unsigned int x = positionXduTank;
unsigned int y = 0;

while(terrain.getPixel(x, y) == sf::Color::White)//sf::Color::Transparent, si l'arrière plan est transparent
{
    y++;
    if(y == hauteurMaxDuTerrain)//Si on est arrivé en bas de la texture, on ne peut pas aller plus loin
        break;
}

// y est maintenant égal à la hauteur à laquelle placer ton tank (depuis le haut)
 
« Modifié: Novembre 10, 2016, 10:12:17 pm par brunnerant »

Deathtreak

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
    • E-mail
Re : Random + collision
« Réponse #6 le: Novembre 10, 2016, 09:47:53 pm »
oui c'est tout a fait quelque chose de ce genre la :D , mais ducou mon tank peut être a moitie dans la texture du terrain non ? Il faut que je prenne 3Y différents pour cela ? (centre et les deux coter ) désoler je te mène la vie dire j'en suis conscient 
De plus je n'ai pas de hauteur limite j'ai un terrain anarchique imposer :D

brunnerant

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
    • E-mail
Re : Random + collision
« Réponse #7 le: Novembre 10, 2016, 10:11:16 pm »
Par hauteur max du terrain, je veux dire la hauteur max de ta texture. Et le test à l'intérieur de la boucle while sert justement à ne pas tester un pixel qui est en dehors de ta texture.

Pour ce qui est de tes trois valeurs de Y je te laisse te débrouiller, cela ne me regarde plus  ;D !

Deathtreak

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
    • E-mail
Re : Random + collision
« Réponse #8 le: Novembre 10, 2016, 11:14:35 pm »
Daccord pas de soucis en tout cas merci beaucoup :D
Je vais peut être enfin y arriver mdr x)
Je sais bien que c'est moi qui est du mal il faut etre courageux pour pas abandonner avec moi  ;D
Bonne soirée et merci  ;)

Varden

  • Newbie
  • *
  • Messages: 46
    • Voir le profil
Re : Random + collision
« Réponse #9 le: Novembre 11, 2016, 07:14:35 pm »
Salut, peut-etre est-ce deja ce que tu fais, mais ne devrais tu pas avoir une suite de droites définissant le contour de ton terrain, afin de calculer les collisions avec les objets posé dessus? par exemple un rectangle pour ton tank. il te suffirais de descentre ton tank jusqu'a ce que tu ai une collision avec le sol en dessous. voir meme avec la paroi du dessus (comme tu semble avoir des zones creuses dans ton terrain).

il y a un tres bon cours sur les collisions ici: https://openclassrooms.com/courses/theorie-des-collisions

 

anything