11-01-2017, 06:39 PM
En pratique, on ne le calcule pas, on pioche des libs existantes (je rabâche, au cas où quelqu'un prenne la conversation en route).
Le BSP n'a pas grand chose à voir avec l'optimisation de ton problème de collision, ce sera même certainement plus lourd (car tu n'as que des rectangles parallèles à X et Y, et non des formes quelconques). Dans ton cas, le moins chiant, c'est de traiter des rectangles et points barre.
La question pertinente donc est de savoir comment limiter la quantité de rectangles à tester. Et là, vu qu'ils sont placés statiquement, le plus simple est de faire un partitionnement statique de l'espace: tu as une liste de rectangles (Rlist), et tu découpes la map en tuiles de 100x100 (par exemple) pour associer à chaque tuile une liste de références vers les rectangles qui touchent cette tuile. Après, t'as juste à piocher la tuile dans laquelle le joueur se trouve, et tu fais ton calcul de collision rectangle par rectangle dans cette tuile.
Le BSP n'a pas grand chose à voir avec l'optimisation de ton problème de collision, ce sera même certainement plus lourd (car tu n'as que des rectangles parallèles à X et Y, et non des formes quelconques). Dans ton cas, le moins chiant, c'est de traiter des rectangles et points barre.
La question pertinente donc est de savoir comment limiter la quantité de rectangles à tester. Et là, vu qu'ils sont placés statiquement, le plus simple est de faire un partitionnement statique de l'espace: tu as une liste de rectangles (Rlist), et tu découpes la map en tuiles de 100x100 (par exemple) pour associer à chaque tuile une liste de références vers les rectangles qui touchent cette tuile. Après, t'as juste à piocher la tuile dans laquelle le joueur se trouve, et tu fais ton calcul de collision rectangle par rectangle dans cette tuile.