Fermer2
deleted2Le 11/11/2009 à 14:33
Alors pour situer le contexte, il s'agit d'un jeu sur TI. Juste pour qu'on ne me propose pas de solutions à base de fpu et autre je ne sais quoi. grin

Mes données :
- une table d'index, représentant la map sur laquelle évolue le perso. Les éléments seront représentés par un tile 16*16
- un personnage 8*13, pouvant se déplacer pixel par pixel sur cette map.
- les coordonnées représentant le top left corner du perso
- une vitesse horizontale et une vitesse verticale.

Mon problème
Mettons que :
- mon perso a une vitesse H de 8 pixels et une vitesse V de 5 pixels.
- un bloc infranchissable se trouve 1 pixel à droite et plus bas que lui

Si j'additionne la vitesse du perso à ses coordonnées, je vais obtenir une collision.

Donc, plusieurs possibilités :

1. idéalement, faire un calcul à base de vecteur pour trouver un angle et une norme. Je sais pas faire une racine en asm, c'est réglé.
Inconvénient : c'est la solution parfaite mais la plus couteuse.

2. additionner d'abord le déplacement horizontal. Vérifier une collision. Mon perso sera donc au-dessus du bloc, pas de problème.
Additionner ensuite le déplacement vertical. Je vais me rendre compte que je vais rentrer dans un bloc, donc je m'arrête à la limite.
Inconvénient : Si j'ai une grande vitesse verticale et une faible vitesse horizontale, en proportion, je vais me retrouver sur le tile, alors que j'aurais dû tomber sur le côté, de manière réaliste.

3. Je sais pas quoi trouver d'intermédiaire, ie pas trop couteux en terme de calcul, mais suffisamment bien pour ne pas provoquer d'énormité. Comment s'y prend-t-on, usuellement, dans ce genre de jeux ?