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 1 & ActionScript 2 Discussion :

Modification d'une droite en fonction des collisions


Sujet :

ActionScript 1 & ActionScript 2

  1. #1
    Membre averti Avatar de Remizkn
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 338
    Points
    338
    Par défaut [RESOLU] Modification d'une droite en fonction des collisions
    Bonjour,

    Je rencontre un problème. J'ai tracé une simple droite en AS2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    _root.createEmptyMovieClip("ligne",1);
    _root.ligne.lineStyle (1, 0x990000, 100);
    _root.ligne.moveTo(0,0);
    _root.ligne.lineTo( limitex,limitey);
    Et j'aurais voulu faire comme un pointeur laser et donc faire en sorte que cette ligne n'aille pas plus loin que la surface d'un mur lorsqu'un entre en contact avec tout en sachant qu'elle changera parfois d'angle. J'avais trouvé autrefois un code source de ce type là mais pas moyen de remettre la main dessus.

    Merci d'avance pour votre aide!

  2. #2
    Membre émérite Avatar de dom_dev
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 073
    Points : 2 338
    Points
    2 338
    Par défaut
    bonjour,

    ben il suffit de remplacer "limitex" par le x du mur ?

  3. #3
    Membre averti Avatar de Remizkn
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 338
    Points
    338
    Par défaut
    Non c'est un peu plus compliqué que ça mais c'est bon j'ai eu ma réponse sur un autre forum. Je met le code pour ceux qui auraient rencontré ce même problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    //je créé un objet qui contient la position de l'origine du rayon (ici je le met au milieu de l'ecran)
    var center:Object = new Object();
    center.x = Stage.width/2;
    center.y = Stage.height/2;
     
    //je créé un clip qui va contenir le rayon
    var render:MovieClip = this.createEmptyMovieClip("render",0);
     
    onmousemove = function(){
            //je recupere l'angle de la souris par rapport a l'origine du rayon
            //l'angle n'est pas un chiffre compris entre 0 et 360 car flash ne compte pas les angle 
            //en degré mais en radian (sous la forme d'un chiffre compris entre 0 et 2*PI)
            var dx:Number = _xmouse - center.x;
            var dy:Number = _ymouse - center.y;
            var angle:Number = Math.atan2(dy,dx);
     
            //maintenant qu'on sait dans quelle direction on veut envoyer notre rayon,
            //on veut savoir sa distance 
     
     
            //je créé une boucle qui va travailler tant qu'on a pas obtenu le resultat
            //on connait notre point de depart, on connait l'angle ; il suffit de verifier
            //chaque point de cette droite jusqu'a ce que 
            // - le hitTest avec le clip contenant tout les obstacle == true
            // - le point est en dehors de l'animation
            // dés que l'on atteint l'une de ces deux conditions, on connait la position finale
            // de notre trait : c'est le dernier point qu'on a verifier 
     
            var isWorking:Boolean = true;
            var dist:Number = 0;
            var px:Number;
            var py:Number;
            while(isWorking){
                    px = center.x + Math.cos(angle) * dist;
                    py = center.y + Math.sin(angle) * dist;
                    if(mc.hitTest(px,py,true) || px <= 0 || px >= Stage.width || py <= 0 || py >= Stage.height){
                            isWorking = false;
                            break;
                    }
                    dist ++;
            }
     
            //enfin , on peut dessiner notre trait
            render.clear();
            render.lineStyle(0,0,100);
            render.moveTo(center.x,center.y);
            render.lineTo(px , py);
     
            updateAfterEvent();

Discussions similaires

  1. Update d'une table en fonction des champs d'une autre table
    Par The Molo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/02/2008, 15h41
  2. Réponses: 2
    Dernier message: 13/12/2007, 15h02
  3. cocher une case en fonction des valeurs sur plusieurs plages
    Par flyfranky dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 15/11/2007, 10h20
  4. Réponses: 6
    Dernier message: 02/06/2006, 11h44
  5. remplir une table en fonction des résultats
    Par Psychomantis dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 19/10/2004, 12h22

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