Je voudrais gerer les collisions de mon personnage avec le decort.
Mais comment faire ?
J'ai pensé a faire cela :
avec Newton Game Dynamic, faire une boite de collision autour du perso
des autres boites de collisions aileurs.
Mais si la boite doit toujour reste horizontale, et les collision peuvent la faire basculer...
Il faudrais pouvoir bloquer les rotation sur les boites de collisions, mais je ne pense pas que se soit possible, non ?
oui,
j'utilise irrlicht comme moteur 3D
Mais pour gerer les collision je pensais utiliser Newton Game Dynamic.
Pour les objets normaux, ok, tout est géré par le moteur physique.
Mais pour le personnage que l'on deplace, je pensais faire un solide auquel on applique des forces pour le deplacer, ainci que le poid...
Sauf que le moteur physique ne prend pas seulement en compte les déplacement, mais aussi les rotation, et mon personnage doit rester debout...
dans beaucoup de FPS (peut etre pas les nouveaux de la mort qui tue (Crysis), mais dans les FPS du genre Quake 3 et cie), ils ne se cassent pas la tete avec ça :
le personnage est encadré par un pavé englobant de type AABB : Axes Align Bounding Box.
Donc pas de rotation de celui ci : toujours aligné avec les axes absolus.
Merci pour vos réponces, je regarde au niveau de l'arbre de collision de irrlicht et je reviens
EDIT :
J'ai regardé au niveau des collisions avec irrlicht, puis aussi un peu sur NewtonGameDynamics.
Il se trouve qu'une fonction existe :
NewtonBodyGetAABB mais je ne sais pas a quoi elle sert...
Alors j'ai utilisé les Bounding box de irrlicht, et sa marche effectivement parfaitement
Seulement, maintenant comment puis-je faire des sauts ? Vu que la gravité est gérée par l'arbre de collision de irrlicht, je n'est pas la position Y modifié par l'arbre...
Il faudrais pouvoir rajouter une impultion au node, mais est-ce possible ?
Pour les deplacements sur XZ, je peut le faire normalement.
Je te conseil de ne pas utiliser un systeme de collisions de irrlicht :
Demonstration :
Un PC pas trés puissant fais du 20fps.
Une balle se déplace a plus de 1500km/h soit 1500/3.6m/s = 416m/s.
Ta boite fais 50cm de profondeur disons étant donné que la boucle qui va géré tes collisions passera 20 fois par secondes sur la gestion des collisions tu auras un écart de déplacement de 21m entre chaque frame !
C'est a dire que ton model ne sera meme pas reconnu car la balle aura une nouvelle position derriere ou dans ton model.
Shematisation :
* = projectile
l-l = cible
toi -> tir* l-l
aprés frame :
toi l-l *
En gros dans un jeu tu ne peux pas utiliser un systeme de projectile car l'impression de mouvement que tu as est en faite une illusions du au raffraichissement rapide par rapport au nombre maximum d'image par seconde visible.
Dans ce cas je te propose d'utiliser une line je sais que ca existe et celle-ci detetcte le premier model rencontré donc au moment ou tu shoot tu récupére un pointeur sur le model touché si c'est un mur tu applique l'animation de particules adéquatte et tu blit ta texture au point de collision.
Si c'est un joueur la c'est un peu plus compliqué car il te faut modifier la classe et donnez un ID et une correspondance virtuel a chaque object.
Regarde le tuto 7 avec les collisions sur les mesh et le highlight des mesh.
Tu peux faire ça pour le saut:
-Quand t'appuis sur la touche du saut, incrémante la coordonné Z, puis, quand t'atteins le max que tu désires, décrementes le Z avec deux fois la vitesse d'incrémentation pour t'arrêter eu niveau du sol! (tout bête).
La maîtrise des fondamentaux est le fondamental de la Maîtrise.
Tu peux faire ça pour le saut:
-Quand t'appuis sur la touche du saut, incrémante la coordonné Z, puis, quand t'atteins le max que tu désires, décrementes le Z avec deux fois la vitesse d'incrémentation pour t'arrêter eu niveau du sol! (tout bête).
Il est facile d'avoir deux fonctions pour calculer le déplacement :
verticalement : <math>\(hauteur%20%20%3D%20%5Cfrac%7B1%7D%7B2%7D%28-g%29t%5E2%20%2B%20v_%7By0%7Dt\)</math>
horizontalement : <math>\(distance%20%3D%20%5Cfrac%7B1%7D%7B2%7Da_%7Bx%7Dt%5E2%20%2B%20v_%7Bx0%7Dt\)</math>
ça rendra tout de suite les chose plus belle.
Ok, je regarde sa, mais juste en passant :
Je remarque que dans le tuto, le mesh de la map est un BSP.
Cela influt-il sur la suite si j'utilise un 3ds ?
Pour le moment avec les animator de Irrlicht, sa marchait avec des 3ds.(mais je ne pouvais pas monter sur des escaliers, ou des pentes)
J'utilise la même technique que dans le tuto 7 de Irrlich, mais mon terrain n'est pas une map BSP, mais un fichier 3ds.
Les collision sont OK : le perso ne tombe pas à travers le sol, et ne traverse pas les murs, mais pour se qui est de monter une pente (même super legère) sa bloque comme un mur.
Suis-je obligé de passer par une map BSP ?
De plus, les BSP permettent de moins calculer de polygones non ? avec leur espaces découpé?
Comment font les pro? ce n'est pas des BSp que je sache?
Sinon, je pourais toujour revenir sur l'option de Newton Game Dynamique, mais je ne sais pas comment modifier manuellement les rotations d'une primitive, ou bien la mettre par default en AABBox. La seule fonction qui se refere à une AABBox est celle qui permet de la récuperer en fonction d'un primitive créé avant...
Salut,
j'ai essayé de changer et d'exporter en .obj, et la surprise, les collisions marchent, je peut marcher sur les pentes, etc...
Super !
Parcontre le model n'est pas texturé et je ne sais pas si les .obj supportes l'animation.
[EDIT]
A oui, aparament sa ne suporte pas l'animation, ni les bones, sa ne bouge pas et les bones sont sortis comme des polygones à afficher
Comment feriez vous ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
La maîtrise des fondamentaux est le fondamental de la Maîtrise.
La maîtrise des fondamentaux est le fondamental de la Maîtrise.