IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Newton Discussion :

Problème Newton Game Dynamic


Sujet :

Newton

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 38
    Points : 22
    Points
    22
    Par défaut Problème Newton Game Dynamic
    Bonjour,
    Je suis en train de réaliser un jeu vidéo avec Newton et un loader 3DS.
    Je suis actuellement dans une impasse, newton fonctionne correctement mais lorsque que je change de niveau, le personnage devient injouable tout les paramètres (gravité,vitesse,..) semble être augmentés.
    Je ne sais comment faire pour résoudre ce problème.
    Avez vous des idées??

    Merci

  2. #2
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 476
    Points
    11 476
    Billets dans le blog
    11
    Par défaut
    J'ai une idée... Tu n'as qu'à baisser tous les paramètres lors d'un changement de niveau ...
    Plus sérieusement, as-tu isolé le bout de code qui te pose problème ? Peux-tu le poster, parce que sans ça, ça va être très dur de t'aider.

    EDIT :
    Je suppose que lorsque tu charges un niveau tu initialises tes valeurs (vitesse, gravité, ...). Sinon vérifie que lorsque tu détruis ton niveau tu ne "détruis" pas ces valeurs (destruction de l'objet qui les définit, remplacement par quelque chose qui n'a rien à voir ...)
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 38
    Points : 22
    Points
    22
    Par défaut
    Je n'arrive pas à l'isoler...
    Je sais que quand en cours du niveau je fais echap pour revenir au menu et que je clique sur jouer cela fonctionne correctement. Mais a la fin d'un niveau on propose de passer au niveau suivant et la le personnage s'accélère. J'ai essayé en faisant la même chose dans le changement de niveau que dans la touche echap mais le problème persiste.

    Pour vous dire, dans le main j'appelle une fonction menu qui, en cliquant sur "jouer" appelle une fonction initJeu(elle libère la mémoire si on a déjà charger 3DS et newton, elle fait appelle au chargement des fichiers 3DS et à l'initialisation de Newton). Ensuite dans affichage, je teste si le personnage a atteint l'arrivée. Dans ce cas, j'appelle à nouveau initJeu.
    N'y aurait-il pas un problème de récursivité?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    void initJeu(char* niveau, char* arrivee)
    {
    	glDisable(GL_TEXTURE_2D);
    	glEnable(GL_DEPTH_TEST);	
    	glEnable(GL_LIGHTING);  	// Active l'éclairage
      	glEnable(GL_LIGHT0);		// Allume la lumière n°0
    	glEnable(GL_CULL_FACE);		// Permet de masquer les faces arrières	
    	alSourceStop(source[0]);
    	isMenu=false;				// Indique qu l'on ne se trouve plus dans le menu
    	if(charger) liberationMemoire();	// Si l'on a charger newton et 3DS précédemmant alors on libère la mémoire
    	//On initialise les fichiers 3DS
    	init3DS(niveau,arrivee);
    	// On initialise Newton
    	initNewton ();
    	//On appelle la fonction de raffraichissement de Newton
    	raffraichir(1);
    	glutReshapeFunc(redimensionnement);
    	glutDisplayFunc(affichage);
     
    	glutKeyboardFunc(glutKeyboard);
    	glutSpecialFunc(glutSpecialKeys);
    	glutKeyboardUpFunc(relachementTouche);
    	glutPassiveMotionFunc( SourisPassive );
    	glutEntryFunc(&SourisFenetre);
    	glutMouseFunc( Souris );
     
    	idProg = setShaders();
    	cout<<"init shaders : "<<idProg<<endl;
    	alSourcePlay(source[1]);
    	//glutPostRedisplay();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    case ESC:	// touche escape
    			isMenu=true;
    			numeroNiveau=1;
    			initMenu();
    			alSourceStop(source[1]);
    			alSourcePlay(source[0]);	
    			ReshapeMenuMdp( glutGet(GLUT_WINDOW_WIDTH), glutGet(GLUT_WINDOW_HEIGHT));
    			glutMouseFunc(SourisMenu);
    			glutDisplayFunc(AffichageMenu);
    			glutKeyboardFunc(0);
    			glutReshapeFunc(ReshapeMenuMdp);
    			glutSpecialFunc(0);
    			glutSpecialUpFunc(0);
    			glutPassiveMotionFunc(0);
    			glutEntryFunc(0);
    			cout<<endl<<"echape: "<<numeroNiveau;
     
    			glutPostRedisplay();
    			break;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    if(Y>=-0.44 && Y<=-0.16)//passage au niveau suivant
    			{
    				redimensionnement(width, height);
    				if (numeroNiveau==1)
    					initJeu("../3DS/level2.3DS", "../3DS/arrivee2.3DS");
    				if (numeroNiveau==2)
    					initJeu("../3DS/level3.3DS", "../3DS/arrivee3.3DS");
    				if (numeroNiveau==3)
    					initJeu("../3DS/level4.3DS", "../3DS/arrivee4.3DS");
    				if (numeroNiveau==4)//fin du jeu
    					exit(0);
    				numeroNiveau++;
    				cout<<endl<<"changeNiveau: "<<numeroNiveau;
    			}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    void liberationMemoire ()
    {
    	//Destruction de Newton
    	for (GLuint i = 0 ; i < 5 ; ++i){
    		delete objet [i], objet [i] = NULL;
    		delete sol[i], sol[i] = NULL;
    	}
       NewtonDestroy(world);
     
       //Destruction du modele
       perso3D.Destroy();
       map3D.Destroy();
       telecommande3D.Destroy();
       delete g_bitmap;
     
       // Destruction des matériaux
       delete paire[0];
       delete paire[1];
       for(int i=0; i<5; ++i){
    		delete materiau[i], materiau[i] = NULL;
       }
    }

  4. #4
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 476
    Points
    11 476
    Billets dans le blog
    11
    Par défaut
    Est-ce que tu as vérifié les valeurs des variables qui peuvent poser problème,
    avec un std::cout ou un point d'arrêt ?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 38
    Points : 22
    Points
    22
    Par défaut
    Oui j'ai testé. Et les valeurs ne changent pas.
    J'utilise une fonction callback gérant la force d'attraction terrestre ainsi que des setVelocity pour le déplacement.
    Nous avons utilisé un système de mot de passe pour atteindre certains niveaux et je trouve bizarre que lorsqu'on utilise ces mots de passes où que l'on clique sur jouer le personnage retrouve sa vitesse initiale... Serait-ce possible qu'il y ait une accumulation de corps Newton regroupée sur le personnage?!?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 38
    Points : 22
    Points
    22
    Par défaut
    C'est bon le problème est résolu. Je faisais appelle à une fonction dans un autre fichier lors d'un contact avec l'arrivée. J'ai placé son contenu dans le if(contact) au lieu d'appeler la fonction et ça marche (par contre je ne sais pas pourquoi ça marche dans ce cas et pas comme avant). Merci pour votre aide.

Discussions similaires

  1. problème Menu game XNA
    Par Helpdesk dans le forum XNA/Monogame
    Réponses: 10
    Dernier message: 11/05/2011, 16h20
  2. Problème de création : Dynamic Web Project
    Par rockley dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 06/01/2011, 09h00
  3. [AJAX] Script ajax dynamic list
    Par Mihawk dans le forum AJAX
    Réponses: 4
    Dernier message: 06/10/2009, 13h30
  4. [Newton Game Dynamics] Problème de linkage ?
    Par Prosperoh dans le forum Newton
    Réponses: 0
    Dernier message: 12/08/2008, 18h12
  5. utilisation des matrices de Newton Games
    Par Plomeg dans le forum Newton
    Réponses: 9
    Dernier message: 03/04/2008, 10h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo