Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS3
AS3 Questions relatives à la programmation ActionScript 3 (Cours AS3)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/04/2011, 14h44   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2004
Messages : 33
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 33
Points : 12
Points : 12
Par défaut Meilleure façon de déplacer un MovieClip sur des lignes

Bonjour,

je viens de démarrer un projet de jeu vidéo pacman, je voudrais que mes fantômes se déplacent le long d'une ligne définie par un MovieClip appelé "movement"

afin de déterminer les directions possibles (après c'est l'IA qui tranche) je pense faire un test de collision pour chaque direction:
Code :
1
2
3
4
5
 
movement.hitTestPoint(fantome.x+fantome.vitesse, y);
movement.hitTestPoint(fantome.x-fantome.vitesse, y);
movement.hitTestPoint(fantome.x, y+fantome.vitesse);
movement.hitTestPoint(fantome.x, y-fantome.vitesse);
est-ce la meilleure façon de faire ou bien y a-t-il plus intelligent / efficace?

Edit:
Je commence à voir les premiers problèmes de cette approche:

- Comment détecter les intersections? Supposons que mon fantôme ait une vitesse de 4, et qu'il y a une intersection à 3 pixel de son emplacement actuel. Il va se déplacer et passer l'intersection sans jamais se rendre compte qu'il y en a une.

- Comment détecter les coudes? supposons que mon même fantôme est à 1px d'un coude. qui ensuite descend. il devrait donc normalement prendre comme position suivante x+1, y+3

comment faire?
jojolepabo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2011, 20h43   #2
Membre Expert
 
Avatar de Lorenzo77
 
Inscription : mai 2006
Messages : 1 294
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 1 294
Points : 1 220
Points : 1 220
salut,

je vois pas le hitTest comme la meilleur solution, je verrais a la place une simple condition sur x ou y avec une marge de 10/15px (suivant case grille) aux intersections ... et la tu prends en compte la derniere touche enfoncé
évidemment le niveau doit être créée et basé sur une grille

le pacman + fantômes ont toujours la même vitesse, donc ca simplifie les calculs

------

la meilleur soluce pour le déplacement serait surement de stocker les touches enfoncés, si la touche gauche est la derniere enfoncé alors au prochain croisement -> virer a gauche
ca evitera les problemes de tous les pacman en flash ou il est difficile de changer de direction si on appuie pas sur la touche au bon moment
__________________
Le plus grand arbre est né d'une graine menue, une tour de neuf étages est partie d'une poignée de terre.
Mon blog : http://web.codeur.free.fr
Lorenzo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2011, 23h26   #3
Candidat au titre de Membre du Club
 
Inscription : janvier 2004
Messages : 33
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 33
Points : 12
Points : 12
Citation:
Envoyé par Lorenzo77 Voir le message
salut,

je vois pas le hitTest comme la meilleur solution, je verrais a la place une simple condition sur x ou y avec une marge de 10/15px (suivant case grille) aux intersections ... et la tu prends en compte la derniere touche enfoncé
évidemment le niveau doit être créée et basé sur une grille

le pacman + fantômes ont toujours la même vitesse, donc ca simplifie les calculs

------

la meilleur soluce pour le déplacement serait surement de stocker les touches enfoncés, si la touche gauche est la derniere enfoncé alors au prochain croisement -> virer a gauche
ca evitera les problemes de tous les pacman en flash ou il est difficile de changer de direction si on appuie pas sur la touche au bon moment
Oui en effet j'en suis arrivé à la meme conclusion quand mon fantôme a commencé a se déplacer dans tous les sens. J'avais cru que ça fonctionnerait si j'élargissait simplement ma ligne pour qu'elle fasse 5 pixels d'épaisseur (en partant du principe que la vitesse était fixée à 4). C'est là que je me suis rappelé que le hitTest tenait n'était pas pixel-based... et du coup tout un monde s'est écroulé

Je vais donc plutôt opter pour un système de waypoints et utiliser une couche "collision" composée de tuiles de taille fixe.

Pour le déplacement de pacman, effectivement j'étais déjà conscient du problème (je me suis pas encore occupé de lui) mais merci pour le tuyau :-)

Si ça peut intéresser, pour l'IA des fantômes j'ai utilisé le design pattern "behavior" et ça fonctionne pas mal du tout. Comme ça je peux dynamiquement changer l'implémentation de leur fonction move().

Quand j'aurai fini mon implémentation je posterai tout ça sur le forum.
jojolepabo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h02.


 
 
 
 
Partenaires

Hébergement Web