bonjour voila je suis entraine de creer un jeux de voture un peu comme dans l'exemple du tuto sur la rotation avec SDL_gfx et voila j'ai beau ma creuser la tete je vois pas comment faite pour que ma voiture suive l'angle de rotation, je ne sait pas vraiment comment faire voici un bout de code
int angle;
SDL_Rect pos;
//quand event.key.keysym.sym
case SDLK_LEFT:
angle++;
break;
case SDLK_RIGHT:
angle--;
break;
et mon prbleme est que je je sait pas quoi mettre pour les tuche haut et bas car il faut que la voiture aille dans une diriection qui a un raport avec l'angle.
Pourquoi vx et vy ?
tu te déplaces d'une distance euclidienne v (ou d) : elle représente le rayon d'un cercle si tu y représentes de façon trigo, c'est le meme v qu'il faut mettre dans les 2 lignes.
j'avait fait sa pour essayer vus que sa me marchait pas mais sa marche tjs pas
void Car::aff(SDL_Surface *ecran)
{
if(angle == 360 || angle == -360)
angle = 0;
angleR = angle * 3.1415 / 180;
pos.x += vy *cos(angleR);
pos.y += vy *sin(angleR);
voiture = rotozoomSurface(car, angle, 1.0, 1);
posV.x = pos.x - voiture->w/2;
posV.y = pos.y - voiture->h/2;
SDL_FillRect(ecran, NULL, 0);
SDL_BlitSurface(voiture, NULL, ecran, &posV);
SDL_Flip(ecran);
}
void Car::gereTouche(SDL_Event event)
{
if(event.type == SDL_KEYDOWN)
{
switch(event.key.keysym.sym)
{
case SDLK_UP: vy = -10; break;
case SDLK_DOWN: vy = 10; break;
case SDLK_LEFT: angle++; break;
case SDLK_RIGHT: angle--; break;
}
}
if(event.type == SDL_KEYUP)
{
switch(event.key.keysym.sym)
{
case SDLK_UP: vy = 0; break;
case SDLK_DOWN: vy = 0; break;
case SDLK_LEFT: vx = 0; break;
case SDLK_RIGHT: vx = 0; break;
}
}
}
je pense que c'est la transformation de degré a radiant qui est fausse
mon niveau est 2de et je passe en 1erS mais on a pas vu les radiant en seconde a cause de la prof elle s'etendait trop sur les cour et on a pas eu le temps
j'ai deja je metait trompé en passent de degré a radaiant c'est angle *PI / 180
et apres c'est
la formule pour les radians est pourtant bonne
par contre, attention ! (je ne sais pas si l'erreur vient de la), mais ton angle en radian doit etre un flottant !! Pas un entier
Dans un premier temps, pour rester, met une constante pour ton vy :
dis moi je sais pas si ton probleme est la mais moi j'ai un soucis avec la position de l'objet apres la rotation.
En effet comment fais tu pour initialiser : pos.x et pos.y
posV.x = pos.x - voiture->w/2;
posV.y = pos.y - voiture->h/2;
j'ai vu que tu transformais la valeur avec un angle en radian mais quelle valeur a tu au tout debut.
J'ai je pense le meme probleme que toi.
Si je bouge mon objet et que je passe en parrametre ma position et que j'effectue la transformation mon objet est deplacé du fait de la transfromation de mon objet lors de la rotation
× 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
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html