Bonjour je fais un petit RPG et j'ai un problème avec le scrolling map.
En effet, ma carte se déplace bien mais de manière sacadé...
Je vous explique brièvement le schemas de mon jeu
Chargement de la map ---------------------
J'ai un fichier .txt que je viens lire... Je récupère la taille de ma map Width et Height. je place chaque élément dans un tableau à deux dimensions Mon tableau est plsu grand que la taille de mon ecran... d'où la nécessité de faire du scrolling
Deplacement du joueur ---------------------
Je déplace mon joueur :
Vers la droite : ->
if (this.offSetX < this.tile_width * 32 - 800) //Si la partie parcourus par le perso est inférieure à celle à parcourir { this.offSetX ++; //On bouge la map } else { if(this.myPerso.getSprite().X + 32 < 800) //Sinon on bouge le perso à l'écran tant qu'il n'est pas sortie de l'écran this.myPerso.getSprite().X++; }
if ((this.offSetX - (this.tile_width * 32 - 800) < 0)&&(this.myPerso.getSprite().X > 400)) //Si Il y a encore une partie de la map à parcourir et si nous sommes au delà du milieu de l'écran, on centre la vue du joueur this.myPerso.getSprite().X = 400;
Dessin de la map -----------------
Je parcours mon tableau :
int t = this.offsetY / 32; //Récupération du Y de départ int z;
for (int i = this.offSetX / 32 ; i < myScreen.Height / 32 ; i++) //On redessine chaque tile à l'écran { z = this.offSetX / 32; for (int j = this.offSetX / 32; j <= myScreen.Width / 32; j++) { myScreen.Blit(this.myTiles[i][j].getMyTile(), new Point(j * 32, i * 32)); z++; } t++; }
Je ne pense pas que ma technique soit optimisée, de plus elle ne me donne pas entière satisfaction, alors si vous pouviez m'indiquez et m'expliquez une meilleure méthode...
Merci d'avance
--------------- www.forzaitalia.ath.cx Tout sur la squadra azzurra et le football européen
Marsh Posté le 10-11-2007 à 16:30:52
Bonjour je fais un petit RPG et j'ai un problème avec le scrolling map.
En effet, ma carte se déplace bien mais de manière sacadé...
Je vous explique brièvement le schemas de mon jeu
Chargement de la map
---------------------
J'ai un fichier .txt que je viens lire...
Je récupère la taille de ma map Width et Height.
je place chaque élément dans un tableau à deux dimensions
Mon tableau est plsu grand que la taille de mon ecran... d'où la nécessité de faire du scrolling
Deplacement du joueur
---------------------
Je déplace mon joueur :
if (this.offSetX < this.tile_width * 32 - 800) //Si la partie parcourus par le perso est inférieure à celle à parcourir
{
this.offSetX ++; //On bouge la map
}
else
{
if(this.myPerso.getSprite().X + 32 < 800) //Sinon on bouge le perso à l'écran tant qu'il n'est pas sortie de l'écran
this.myPerso.getSprite().X++;
}
if ((this.offSetX - (this.tile_width * 32 - 800) < 0)&&(this.myPerso.getSprite().X > 400))
//Si Il y a encore une partie de la map à parcourir et si nous sommes au delà du milieu de l'écran, on centre la vue du joueur
this.myPerso.getSprite().X = 400;
Dessin de la map
-----------------
Je parcours mon tableau :
int t = this.offsetY / 32; //Récupération du Y de départ
int z;
for (int i = this.offSetX / 32 ; i < myScreen.Height / 32 ; i++) //On redessine chaque tile à l'écran
{
z = this.offSetX / 32;
for (int j = this.offSetX / 32; j <= myScreen.Width / 32; j++)
{
myScreen.Blit(this.myTiles[i][j].getMyTile(), new Point(j * 32, i * 32));
z++;
}
t++;
}
Je ne pense pas que ma technique soit optimisée, de plus elle ne me donne pas entière satisfaction, alors si vous pouviez m'indiquez et m'expliquez une meilleure méthode...
Merci d'avance
---------------
www.forzaitalia.ath.cx Tout sur la squadra azzurra et le football européen