4Fermer6
BrunniLe 25/04/2009 à 17:06
Merci bcp, génial l'idée smile

En attendant je m'étais arrangé temporairement avec un terrain mathématique (dans la version finale effectivement ce sera du bitmap car c'est difficile à calculer les murs détruits, même en utilisant des polygones). Et j'ai rencontré un problème qui peut sembler vraiment basique mais que je n'arrive pas à résoudre sad

Prenons ce cas:
img034e.png
Une collision a lieu au point rouge. Grâce à ta méthode, je vais pouvoir trouver l'angle de la pente, marquée d'un trait rouge. Je vais aussi pouvoir me servir de la normale pour sortir le tank de la pente en lui appliquant une force parallèle à N (n'est-ce pas? déjà là ça me paraît un poil louche, étant donné que vu l'angle du tank la Fp devrait être purement verticale)
Une fois que le tank est sur la pente, alors on va pouvoir le faire basculer pour refléter l'angle de la pente. Comme la méthode donne une moyenne, il se peut que l'angle calculé ne soit pas parfaitement précis et qu'on se retrouve dans le cas suivant:
img035.png
Le moteur de collisions va alors voir une collision sur la gauche et soit remonter le tank:
img036t.png
Soit (imaginons que ce soit possible) faire basculer le tank:
img037.png
Mais dans ce cas on risque de rencontrer à nouveau une collision sur la pente, qui va reconduire au même problème. Sans compter qu'à chaque fois le moteur de collision va repousser le tank en utilisant une force qui ici ne sera pas parallèle à Oy. Donc le tank va bouger sur la gauche et "branler". En prenant la moyenne par rapport au milieu du tank, ça rend un poil mieux mais le problème est toujours là. Cf ce petit test (il faut Windows & le .NET framework 2):
http://brunni.dev-fr.org/tmp/Canon.7z