AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le deal à ne pas rater :
Réassort du coffret Pokémon 151 Électhor-ex : où l’acheter ?
Voir le deal

 

 pacman image_angle

Aller en bas 
2 participants
AuteurMessage
chopsuey
Utilisateur confirmé: Rang ***
chopsuey


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
...

pacman image_angle Empty
MessageSujet: pacman image_angle   pacman image_angle EmptyJeu 26 Déc 2013 - 11: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
onilink_


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

pacman image_angle Empty
MessageSujet: Re: pacman image_angle   pacman image_angle EmptyJeu 26 Déc 2013 - 11: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?

_________________
pacman image_angle Runningpotato1pacman image_angle TvF6GED pacman image_angle MdetltS
Revenir en haut Aller en bas
chopsuey
Utilisateur confirmé: Rang ***
chopsuey


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
...

pacman image_angle Empty
MessageSujet: Re: pacman image_angle   pacman image_angle EmptyJeu 26 Déc 2013 - 11: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é





pacman image_angle Empty
MessageSujet: Re: pacman image_angle   pacman image_angle Empty

Revenir en haut Aller en bas
 
pacman image_angle
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» PacMan 3D
» PacMan
» [Résolu] IA PACMAN
» pacman platformer
» pacman revenge: terminé!!!

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: