IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

Meilleure façon de déplacer un MovieClip sur des lignes


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 33
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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?

  2. #2
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    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

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 33
    Par défaut
    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.

Discussions similaires

  1. action sur des lignes dans un fichier
    Par piktux dans le forum Général Python
    Réponses: 11
    Dernier message: 11/02/2010, 15h48
  2. [XL-2003] TRansposé de refs en colonne sur des lignes.
    Par bomaletoi dans le forum Excel
    Réponses: 8
    Dernier message: 01/10/2009, 14h16
  3. Boucle sur des lignes et colonnes
    Par Livet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/08/2007, 19h45
  4. Autofit sur des lignes marche pas
    Par coco21 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/07/2007, 15h35
  5. jointure sur des lignes d'une même table
    Par elsa_dach dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/01/2007, 12h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo