| questiont important |
ben

Grade : Débutant
Inscrit le: 25 Sept 2011, 20:10
|
| Ecrit le: 25 Sept 2011, 20:34 Message non corrigé | |
|
bonjour a tous,
voila j'ai deux trois questions:
est-ce que avec le tutoriel de créer un fps a-z ont peut avoire une arme et tirer avec comme dans les jeu en ligne fps?
Deuxième questions comment fait-ton pour mettre une arme qui tire dans son jeu?
Voila je vous remercies de me répondre ;)
________ Qui tente rien a rien ;)
|
|
| |
|
|
David

Grade : Expert
Inscrit le: 11 Mai 2005, 20:30
|
| Ecrit le: 27 Sept 2011, 22:33 Message non corrigé | |
|
Il faut passer par la 2D pour ajouter l'arme.
Pour ce qui est du teste de collision avec la balle et l'ennemie, il faut dessiner la scène sans les personnes, puis une seconde fois avec les personnage. Si entre les deux la valeur du z-buffer est modifié, alors l'ennemi est touché.
________ Apprenez à créer votre propre FPS en C++ avec OpenGL. C'est pas dur ! :-)
|
|
| |
|
|
ben

Grade : Débutant
Inscrit le: 25 Sept 2011, 20:10
|
| Ecrit le: 28 Sept 2011, 16:33 Message non corrigé | |
|
bonjour,
ok mes y a un code pour insérer l'arme dans le jeu?
Et pour les tire est mort de personnage y a un programme ou code spécial si oui je vous remercies de me le dire :)?
je vous remercies de me répondre ;)
________ Qui tente rien a rien ;)
|
|
| |
|
|
David

Grade : Expert
Inscrit le: 11 Mai 2005, 20:30
|
| Ecrit le: 28 Sept 2011, 22:18 Message non corrigé | |
|
Alala, il est tenace le gars ! :D
Je l'ai fait sur une version de teste (celle de la vidéo).
Mais dans la version présentée dans le tutoriel, je ne l'ai pas encore fait.
Voici la méthode dessiner3D() que j'ai faite pour vérifier si un pixel été affecté par le dessin de l'objet à l'écran.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | bool8 Objet3DStatique::dessiner3D(GLint x, GLint y) { // Fonction : Dessine l'objet a l'ecran et retourne TRUE ssi le dessin de l'objet affecte le point GLfloat distancePointAvant, distancePointApres; // Mesure la distance du point glReadPixels (x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &distancePointAvant); // Dessin de l'objet this->dessiner3D(); // Remesure la distance du point glReadPixels (x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &distancePointApres); // Retourne TRUE ssi la distance du point a ete modifier pendant le dessin de l'objet return distancePointAvant != distancePointApres; } |
La méthode Objet3DStatique::dessiner3D(void) dessine réellement l'objet à l'écran. La méthode Objet3DStatique::dessiner3D(GLint x, GLint y), quant à elle, dessine également l'objet à l'écran, mais en plus, elle retourne TRUE ou FALSE si le pixel spécifié en paramètre par x et y est affecté par le dessin de l'objet.
Comment ça marche ?
Pour dessiner ou pas un objet en fonction de s'il est caché ou par par un autre objet, la carte graphique possède un tampon de profondeur. Ce tampon contient la distance de chacun des pixels que tu vois à l'écran. Pour obtenir la valeur du tampon de profondeur pour le pixel (x;y), j'appelle la primitive glReadPixels() avec les paramètres qui vont bien (voir la doc d'OpenGL).
En comparant la profondeur du pixel avant et après le dessin de l'objet, je détermine si, oui ou non, un objet a été dessiné sur ce pixel. Si c'est le cas du pixel vidé par l'arme, alors l'objet (ou personnage) est bien visé.
Et pour ce qui est de l'arme, tout est expliqué dans ce sujet : De la 2D dans de la 3D.
Si y a un truc que j'explique mal, redemande moi. ;-)
A bientôt.
________ Apprenez à créer votre propre FPS en C++ avec OpenGL. C'est pas dur ! :-)
|
|
| |
|
|
ben

Grade : Débutant
Inscrit le: 25 Sept 2011, 20:10
|
| Ecrit le: 29 Sept 2011, 17:50 Message non corrigé | |
|
oui ok mes le opengl ont dit qu'il est sur son pc mes moi je le voie pas?
________ Qui tente rien a rien ;)
|
|
| |
|
|
David

Grade : Expert
Inscrit le: 11 Mai 2005, 20:30
|
|
| |
|
| |