AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 pacman image_angle

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
chopsuey
Utilisateur confirmé: Rang ***
avatar

Messages : 523
Localisation : saint etienne
Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...

MessageSujet: pacman image_angle   Jeu 26 Déc 2013 - 10:11

Je fais un jeu pacman et je tombe sur un problème étrange. Enfaite je m'en fou un peu de faire ce jeu je pourrais laisser tomber mais je reste bloqué sur ce problème par ce qu'il faut que je comprenne. Mes déplacements marchent bien, mais si je change l'angle de l'image pour chaque direction il se bloque dans le mur.
Pourtant c'est du 32x32 avec un point d'origine à 16x16 et la boite de collision est rectangulaire en 32x32 donc changer image_angle ne devrait pas perturber les collisions puisque dans n’importe quel sens la boite reste la même.
Les bloques font eux aussi 32x32 et le chemin qui sépare les bloques fait également 32x32.
J'ai essayé en créant 2 sprites un verticale et l'autre horizontal et en jouant avec xscale et yscale mais c'est pareil.
J'ai pas essayé mais normalement ça devrait fonctionner en faisant 4 sprites différent mais je vois pas pourquoi je serrais obligé de faire ça et j'ai envie de comprendre où est mon erreur.

mon code:

D=direction
DF=direction futur, c'est la direction que le joueur prévoit de prendre.  

Code:

if x<0{x=room_width}
if x>room_width{x=0}

image_angle=D

for (i=0;i<vitesse;i+=1)
{
if keyboard_check(vk_right)and not position_meeting(x+(sprite_width/2)+1,y,obj_bloc)
{
if D==180{D=360}
DF=360
}
if keyboard_check(vk_left)and not position_meeting(x-(sprite_width/2)-1,y,obj_bloc)
{
if D==360{D=180}
DF=180
}
if keyboard_check(vk_down)and not position_meeting(x,y+(sprite_height/2)+1,obj_bloc)
{
if D==90{D=270}
DF=270
}
if keyboard_check(vk_up)and not position_meeting(x,y-(sprite_height/2)-1,obj_bloc)
{
if D==270{D=90}
DF=90
}

if D==360 //droite
{
if not place_free(x,y-1) or not place_free(x,y+1)
{
if place_free(x+1,y)
{x+=vitesse/vitesse}
}
if place_free(x,y-1)or place_free(x,y+1)
{
if DF==270{D=270;}
if DF==90{D=90;}
if DF==360
{
if place_free(x+1,y)
{x+=vitesse/vitesse}
}
}
}

if D==180 //gauche
{
if not place_free(x,y-1)or not place_free(x,y+1)
{
if place_free(x-1,y)
{x-=vitesse/vitesse}
}
if place_free(x,y-1)or place_free(x,y+1)
{
if DF==270{D=270;}
if DF==90{D=90;}
if DF==180
{
if place_free(x-1,y)
{x-=vitesse/vitesse}
}
}
}

if D==270 //bas
{
if not place_free(x-1,y) or not place_free(x+1,y)
{
if place_free(x,y+1)
{y+=vitesse/vitesse}
}
if place_free(x-1,y) or place_free(x+1,y)
{
if DF==180{D=180;}
if DF==360{D=360;}
if DF==270
{
if place_free(x,y+1)
{y+=vitesse/vitesse}
}
}
}

if D==90 //haut
{
if not place_free(x-1,y) or not place_free(x+1,y)
{
if place_free(x,y-1)
{y-=vitesse/vitesse}
}
if place_free(x-1,y) or place_free(x+1,y)
{
if DF==180{D=180;}
if DF==360{D=360;}
if DF==90
{
if place_free(x,y-1)
{y-=vitesse/vitesse}
}
}
}
}

_________________
Spoiler:
 
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8904
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: pacman image_angle   Jeu 26 Déc 2013 - 10:14

chopsuey a écrit:
Pourtant c'est du 32x32 avec un point d'origine à 16x16 et la boite de collision est rectangulaire en 32x32 donc changer image_angle ne devrait pas perturber les collisions puisque dans n’importe quel sens la boite reste la même.

Ben non justement, vu qu'on ne peut couper un pixel en deux. Si ça avais été du 33x33 ça aurais pu passer, mais dans tous les cas on ne modifie jamais image_angle si on veux juste modifier l'affichage.
image_angle tourne aussi le masque de collision, donc a n'utiliser que quand on en a vraiment besoin a ce niveau.

Et j'ai du mal a comprendre ton vitesse/vitesse. Pourquoi ne pas juste mettre 1?

_________________
                 
Revenir en haut Aller en bas
chopsuey
Utilisateur confirmé: Rang ***
avatar

Messages : 523
Localisation : saint etienne
Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...

MessageSujet: Re: pacman image_angle   Jeu 26 Déc 2013 - 10:42

Ha mais oui ok donc il ne peut pas y avoir de centre avec du 32x32.
Mais du coup j'avais essayé en faisant un draw_sprite et en utilisant un autre mask mais ça changeait rien.
Au pire je change juste la taille, mais c'est dommage ça serrait bien d'avoir une fonction image_angle qui ne modifie pas le mask par ce que c'est pas la 1er fois que ça me pose des problèmes.    
Pour vitesse/vitesse effectivement dans ce cas ça sert à rien. Je fais ça par habitude par ce que en principe j'utilise toujours des variables d'accélération et de décélération qui change la valeur de vitesse et donc je met vitesse/vitesse_max pour i<vitesse_max
Mais ouais la ça sert à rien j'y est juste pas réfléchit ^^
Et merci Smile

_________________
Spoiler:
 
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: pacman image_angle   

Revenir en haut Aller en bas
 
pacman image_angle
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Bagues Pacman pour geekette
» Création de bijoux by Janelabanane
» pacman into darkness

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: