Forums Développement Multimédia

Aller au contenu

Limiter deplacement sur grille 2D iso ✔

CODE

9 réponses à ce sujet

#1 yab

    Ceinture Blanche

  • Members
  • Pip
  • 8 messages

Posté 08 February 2012 - 13:10 PM

Bonjour tout le monde,
Alors je ne suis pas tout à fait nouveau sur le forum, mais je n'ai pas réussi à récupérer mes anciens identifiants, alors me voilà avec un profil tout neuf (peut-être certains avaient-il déjà eu l'occasion de me faire profiter de leurs lumières quand j'étais encore jeanjean).

Bref.
Je suis en train de travailler (avec as3IsoLib), sur un petit jeu qui comporte une grille, sur laquelle se déplace des personnages. Rien de très complexe (pas de collision, chemins,...).
Je veux par contre que mes personnages ne puissent se déplacer que sur un périmètre bien défini du plateau (de 3 cases autour d'eux par exemple, voir la pièce jointe).
Mais j'ai du mal à trouver la bonne logique pour faire ça.
Comment savoir si les tuiles en question sont bien dans cette zone ? Autant à plat, ça ne me poserais pas de problème mais là... bof.

J'espère être clair.

Merci d'avance,

Miniature(s) jointe(s)

  • Image attachée: Capture d’écran 2012-02-08 à 13.00.13.png


#2 flodb

    Ceinture Orange

  • Members
  • PipPipPip
  • 43 messages

Posté 10 February 2012 - 21:12 PM

Je ne sais pas si ça va t'aider mais je tente une réponse qui va être assez schématique... aprés mon verre de blanc ;)

1 - les coordonnées du clic de la souris correspondent à une case

exemple:
L (ligne du plateau) = int(mouse.x / largueur de case);
C (colone du plateau) = int(mouse.y / largueur de case);


2 - cette case est-elle à une distance de 3 case?

exemple:
point.x = L - int(taPiece.x / largueur de case);
point.y = C - int(taPiece.y / largueur de case);

si point.x <= 3 et point.y <= 3 alors on n'autorise pas le déplacement

#3 yab

    Ceinture Blanche

  • Members
  • Pip
  • 8 messages

Posté 13 February 2012 - 17:30 PM

Salut, et merci pour ta réponse,
Par contre il me semble que ton exemple ne prend pas en compte le fait que dans le cas ou le perso peut se déplace de maximum trois cases, certaines cases dans ce périmètre ne sont pas accessibles (cf les cases rouges de ma nouvelle pièce jointe qui sont bien dans les 3 en x et y mais qui ne sont pas accessibles au joueur pour autant).

Miniature(s) jointe(s)

  • Image attachée: Capture-d’écran-2012-02-08-à-13.00.13.png


#4 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 13 February 2012 - 18:44 PM

salut :)

en passant ocazou

Voir le messageyab, le 08 February 2012 - 13:10 PM, dit :

je n'ai pas réussi à récupérer mes anciens identifiants, alors me voilà avec un profil tout neuf

oui, il y a eu quelques cartons secoués pendant le déménagement ;) as tu vu ça ?


++ :)
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#5 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 13 February 2012 - 18:55 PM

en repassant toujours aucazou
http://forums.mediab...ost__p__1031268

(scrgnscrgngng 'suis sûre d'avoir croisé ce type de question avec une explication illustrée encore plus détaillée… scrgnngn… si ça me revient :roll: … )
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#6 yab

    Ceinture Blanche

  • Members
  • Pip
  • 8 messages

Posté 13 February 2012 - 21:21 PM

Oups, j'ai raté le message concernant le déménagement... :oops:

Merci pour le lien, mais je dois bien avoué que pour le pauvre cerveau de graphiste que je me traine, ça reste relativement obscur...
J'ai dans l'idée qu'il faut que je fasse une double boucle, et que j'incrémente des x et des y par-ci par là, mais à part ça...
Je suis preneur si tu remets la main sur ton deuxième lien.

#7 Lyanoward

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 52 messages

Posté 15 February 2012 - 14:32 PM

Citation

Par contre il me semble que ton exemple ne prend pas en compte le fait que dans le cas ou le perso peut se déplace de maximum trois cases, certaines cases dans ce périmètre ne sont pas accessibles.


Je vais peut être dire une grosse bêtise, mais si tu fais "si point.x + point.y <= 3 alors on autorise le déplacement" ca doit solutionner ton problème non ?

#8 yab

    Ceinture Blanche

  • Members
  • Pip
  • 8 messages

Posté 16 February 2012 - 00:42 AM

Youhouuu. Ça marche.
Moi qui me noyais dans un système de boucles avec saut de la troisième corde et marteau-pilon... C'est beau la simplicité.
Donc au finale, j'ai cumulé vos deux propositions Lyonward et Flodb et c'est tout bon.

Merci beaucoup.

#9 flodb

    Ceinture Orange

  • Members
  • PipPipPip
  • 43 messages

Posté 16 February 2012 - 11:18 AM

je pensais à une autre solution qui peut convenir selon les besoins. Une simple image en overlay écoutant le clic souris pour le déplacement. Celle-ci ayant la forme des déplacements autorisés... "le tour est joué".

Mais la solution que tu as déjà est bien plus malléable et pérenne.

#10 yab

    Ceinture Blanche

  • Members
  • Pip
  • 8 messages

Posté 16 February 2012 - 12:39 PM

Oui, c'est la première solution que j'avais envisagée, mais la zone en question n'a pas une taille fixe et change en fonction de la valeur d'un jet de dé. En plus toutes les tuiles de mon plateau n'ont pas les même propriétés. La forme en question placée au dessus me bloquait pas mal puisque m'empêchant d'accéder directement aux propriétés de chaque tuile d'un simple clic. C'est effectivement plus propre comme ça.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)