2 Stimmen

Gummiband-Effekt

Ich versuche, einen Gummiband-Effekt ähnlich dem in iOS zu implementieren. Ich bin fast da, aber ich brauche Hilfe, um es perfekt zu machen. Es handelt sich um ein Spiel, das ich mit HaxeFlixel erstelle.

  • 'img' ist das ziehbare Bild.
  • Der Ursprung für x und y ist die obere linke Ecke.

Hier ist der Code, den ich gerade habe:

// In der Hauptaktualisierungsschleife
// Wenn auf img geklickt wurde
offsetY = Math.abs(img.y - mouseY);

...

if (img.y > 0) {
    img.y = mouseY - (mouseY * .7);
}
else {
    img.y = mouseY - offsetY;
}

Es funktioniert im Großen und Ganzen so, wie es sollte, aber das Problem ist, dass, wenn ich anfange, das Bild zu ziehen, es auf eine Position leicht unterhalb des oberen Bildschirms schnappt, bevor der "Gummiband-Effekt" einsetzt. Wenn mir jemand dabei helfen könnte, den Schnappschuss loszuwerden, wäre das großartig!

9voto

xerosugar Punkte 193

Ich habe es herausgefunden! Übrigens, hier ist ein Algorithmus, den ich gefunden habe, der sehr ähnlich (wenn nicht sogar identisch) ist wie der, den Apple für seinen Gummiband-Effekt verwendet.

// * x = Entfernung vom Rand
// * c = Konstantenwert, UIScrollView verwendet 0,55
// * d = Dimension, entweder Breite oder Höhe
// b = (1,0 - (1,0 / ((x * c / d) + 1,0))) * d

Und hier ist, was ich gemacht habe, um das Problem zu lösen:

img.y = (1,0 - (1,0 / (((FlxG.mouse.screenY - offsetY) * .55 / 640) + 1,0))) * 640;

(Es funktioniert fast genau wie der oben von mir gepostete Teil)

img.y = mouseY - (mouseY * .7);

Aber alles was ich tun musste, um das "Einrasten" Problem zu lösen, war es, den y-Offset von der Mausposition abzuziehen, duh! ;D Trotzdem vielen Dank!

0voto

th3byrdm4n Punkte 174

Art von brauchen mehr Kontext, aber das Eine, was mir auffällt, ist diese Zeile:

Der Ursprung von x und y für alles ist die obere linke Ecke.

Ich würde einfach noch einmal überprüfen, ob der Wert für den Ursprung von x und y in JavaScript im richtigen Kontext des Dokuments / Elements liegt... Es könnte sein, dass es anstatt auf "true" zu " wahr", auf das Dokument mit dem Ursprung oben links ausgerichtet ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X