Avatar billede gobbles Nybegynder
23. januar 2005 - 18:09 Der er 1 kommentar og
1 løsning

Balance simulering

Hej
Jeg er ved at lave en lille simulering/udfordring hvor man skal balancere en pind på højkant med en finger styret af musen..

jeg har denne kode indtil videre, men koden får det ikke til at se realistisk ud og tager ikke rigtig højde for at jo mere man mister kontrollen over pinden jo hurtigere vil den falde til siden og jo mere skal man bevæge fingeren for at få kontrollen over den igen:

onClipEvent (load) {
    finger = _root.finger;
    rotator = 180;
}
onClipEvent (enterFrame) {
        if (finger._x>275) {
        rotator -= 1.5;
    } else {
        rotator += 1.5;
    }
    this._rotation = rotator;
}


når man bevæger musen mod højre går MC'et finger mod venstre og roterer pinden modsat.

275 er midten af scenen så bevæger man sig til henholdsvis højre og venstre begynder pinden at "vælte"

Kan nogen hjælpe mig med at gøre scriptet mere realistisk og måske som et ekstra pift, give mulighed for at bevæge finger og pind i y-aksens retning.

Tak for alle forslag
Avatar billede gobbles Nybegynder
23. januar 2005 - 23:12 #1
ok jeg har, med lidt hjælp rundt omkring, fået flækket dette sammen...

onClipEvent (load) {
    var finger = _root.finger;
    var fudgeFactor = .1;
    var rotationalSpeed = 0.1;
    var xOld = _xmouse;
    var speedOld = 0;
    var fudge2 = .1;
}
onClipEvent (enterFrame) {
        var speed = _xmouse-xOld;
    xOld = _xmouse;
        var accel = speed-speedOld;
    speedOld = speed;
        this.rotationalSpeed -= fudge2*accel*Math.cos(this._rotation*Math.PI/180);
        this.rotationalSpeed += fudgeFactor*Math.sin(this._rotation*Math.PI/180)*180/Math.PI;
    this._rotation += this.rotationalSpeed;
    this._x = finger._x;
}

dette måler farten og retningen af musen og vipper pinden... men det fungerer stadigt ikke helt som i virkeligheden.. nogen der kan hjælpe med denne kode..
Avatar billede gobbles Nybegynder
24. januar 2005 - 21:38 #2
Hurra!!! til mig selv.. dette endte med at være mere simpelt

stop();
time=0
finger.onEnterFrame = function() {
    this.dx = _root._xmouse-this._x;
    this._x = _root._xmouse;
};
g = 12;
pencil.onEnterFrame = function() {
    if (this._rotation>60 || this._rotation<-60) {
        this._y += 15;
        var force = 0;
    } else {
        this._x = finger._x;
        var force = finger.dx;
    }
    var dRot = g*Math.cos((this._rotation-90)*Math.PI/180);
    this._rotation += (dRot-force);
    time++
    outPut=time/24
    trace(time)
};
onMouseUp = function () {
    play();
};
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