Historique des modifications - Message

Message #922

Sujet: Discret ou Continu ?


Type Date Auteur Contenu
Création du message 29-12-2006 14:52:59 White Threat
Je pense qu'il y a autant de facons d'aborder ce probleme que de programmeurs et de programmes.
Tu te places dans le cas ou il y a beaucoup d'objets.

donc tu peux:
  • soit utiliser la methode de Copland avec des Quad/OcTree (ce qui va etre long et fastidieux a programmer) mais qui est a mon avis la plus elegante (mais je ne l'ai encore jamais utilisee pour faire un jeu) car elle va te permettre de customiser toutes les interactions et de ne stocker que ce dont tu as besoin.


(je prefere cette deuxieme solution qui est la plus rapide a mettre en oeuvre)- soit d'utiliser une simple matrice de liste d'objets. Tu stockes donc dans chaque case de ta matrice l'ensemble des objets qui s'y trouvent. Avec une methode de "trace ligne discrete", tu obtiens l'ensemble des cases que tu vas intersecter. Ainsi, tu obtiens rapidement un sous ensemble des objets qui se trouvent sur tes cases, il ne te reste plus qu'a savoir si la boite englobante de ton personnage passe entre la liste des objets stockes qui se trouvent sur ton chemin.

un petit exemple peut aider:
  • Tu as une matrice de listes (qui correspond a ton monde).
  • Tu as un ensemble d'objets qui ont une position (x,y,z) et une forme (generalement, un pave ou une spere)
  • Stockes ces objets dans les cases qui correspondent le mieux a leur position (quel niveau d'approximation te suffit).

(petite disgression: tu peux stocker plusieur fois le meme objet dans des cases differentes si leur volume est important)
  • Tu as ton personnage (qui est aussi un objet 3d avec une forme)
  • Tu fais un petit moteur de choc qui calcul l'intersection entre les differentes formes que tu utilises.
  • A chaque deplacement, tu recuperes l'ensemble des objets sur ton chemin (sans te poser la question de la hauteur au debut) et tu appelles ton moteur de collision sur chacun des objets pour savoir si tu as percute un objet.


Maintenant, c'est vrai qu'avec un exemple concret, ce serait plus facile de repondre a ta question...

Bonne chance pour la suite.

WT

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
165 invités en ligne
membre en ligne: -
RSS Feed