Avatar billede soelle Nybegynder
15. februar 2007 - 14:40 Der er 6 kommentarer og
1 løsning

Cirkel som følger linje

Jeg har fundet et script hvor man kan få cirklen til at følge en linje, også når linjen er roteret. Problemet kommer når jeg så roterer selve cirklen for at give effekten af at den kører. Så følger den nemlig ikke linjen mere. Nogen der har en løsning på det?

Functionen checkLine afvikles fra selve linjen, når cirklen rammer.

onEnterFrame = function () {
    vy += gravity;
    box_mc._x += vx;
    box_mc._y += vy;
    box_mc._rotation += vx;
   
    if (Key.isDown(Key.RIGHT)) {
        vx += accel;
    }
    if (Key.isDown(Key.LEFT)) {
        vx -= accel;
    }
    boxBund = box_mc._y;
    if (boxBund>=bottom) {
        box_mc._y = bottom;
        vy *= bounce;
    }
};
function checkLine(line:MovieClip) {

    // get angle, sine and cosine
    var angle:Number = line._rotation*Math.PI/180;
    var cosine:Number = Math.cos(angle);
    var sine:Number = Math.sin(angle);

    // get position of box_mc, relative to line
    var x:Number = box_mc._x-line._x;
    var y:Number = box_mc._y-line._y;

    // rotate line
    var y1:Number = cosine*y-sine*x;
    var vy1:Number = cosine*vy-sine*vx;

    if (y1>-box_mc._height/2 && y1<vy1) {

        // rotate line
        var x1:Number = cosine*x+sine*y;

        // rotate velocity
        var vx1:Number = cosine*vx+sine*vy;
       
                // perform bounce with rotated values
        y1 = -box_mc._height/2;
        vy1 *= bounce;

        // rotate everything back
        x = cosine*x1-sine*y1;
        y = cosine*y1+sine*x1;
        vx = cosine*vx1-sine*vy1;
        vy = cosine*vy1+sine*vx1;

        // reset actual box_mc position
        box_mc._x = line._x+x;
        box_mc._y = line._y+y;

    }
}
Avatar billede soelle Nybegynder
15. februar 2007 - 14:41 #1
Jeg kan tilføje at registration point er centreret.
Avatar billede soelle Nybegynder
16. februar 2007 - 07:56 #2
Fandt selv løsningen... højden blev selvfølgelig regnet fra boundingbox og ikke selve cirklen, så når den stod på et hjørne gav det problemer.
Avatar billede larsholmgaard_dk Nybegynder
16. februar 2007 - 12:02 #3
Det kunne jeg godt tænke mig at se i funktion - har du et link til det?
Avatar billede soelle Nybegynder
16. februar 2007 - 14:17 #4
nej ikke endnu... men hvis du bruger ovenstående kode skal du definere højden på din cirkel i en variablen og så bruge variablen de steder for der står box_mc/height. Giver det mening?
Avatar billede soelle Nybegynder
16. februar 2007 - 14:58 #5
Jeg kan evt. sende dig noget på mail?
Avatar billede larsholmgaard_dk Nybegynder
16. februar 2007 - 15:09 #6
Ja, det kunne være spændende! Kast det i retningen af email [at] larsholmgaard.dk :-)
Avatar billede kragekjaer Praktikant
16. februar 2007 - 19:54 #7
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester