Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Wackeleffekt (https://www.delphipraxis.net/173563-wackeleffekt.html)

Jazzman_Marburg 4. Mär 2013 10:13

Wackeleffekt
 
Werte Gemeinde.
Für ein Brettspiel platziere ich zu Anfang die Spielsteine auf das Spielbrett. Die Spielsteine sind von TImage abgeleitet, und werden per assign an das Basis-Panel übergeben. Soweit alles prima.
Nun würde ich den Spielsteinen gern einen "Wackeleffekt" verpassen: Wenn sie auf das Spielbrett platziert werden, sollen sie einen wenig nachwackeln. Weiss nicht wie ich besser umschreiben soll -- sowas wie beim iPad: Wenn man dort die Desktop-Icons markiert, dann wackeln sie so fröhlich, oder "zuppeln".
Rein technisch würde ich denken, dass ich die X,Y Koordinate der Spielsteine für kurze Zeit ein wenig verändere -- habe aber keine Vorstellung davon, wie man sowas halbwegs "harmonisch" hinbekommt.

Jemand eine Idee -- oder Hinweise?
Bin für jeden Tipp dankbar.

Lieben Dank
Jazzamn

DeddyH 4. Mär 2013 10:46

AW: Wackeleffekt
 
IIRC waren hier ganz nette Beispiele dabei: http://www.delphipraxis.net/150798-a...n-pattern.html

Caps 4. Mär 2013 11:19

AW: Wackeleffekt
 
Das klingt nach Physik ;-).
Ich würde den Spielsteinen Eigenschaften wie Beschleunigung_i, Geschwindigkeit_i, und Ort_i (zweidimensional) geben und diese über einer timergesteuerten Zeit verändern.
Du gibst z.B. der Geschwindigkeit und dem Ort im Augenblick des Spielsteinsetzens Vorgabewerte, und die Beschleunigung ergibt sich dann aus einem Potential, welches sein Zentrum genau im Zentrum der Brettrasterposition hat. Das Potential kannst Du nach der Federgleichung definieren: F_i = D*x_i, also Kraft (Beschleunigung) ist linear abhängig von der Auslenkung, d.h. von der Entfernung des Spielsteins von seiner zentralen Position. Dann schwingt das ganze hübsch.
Um eine endliche Schwingung zu erzeugen, muss noch eine Dämpfung definiert werden. Ab einer gewissen "Kleinheit" setzt Du die Variablen dann alle auf 0, und der Vorgang ist beendet.

Sorry, nicht sehr detailliert, aber so ähnlich würde ich es machen.

lg Caps

Popov 4. Mär 2013 11:25

AW: Wackeleffekt
 
Ich hab mal für ein Programm eine Wackelfunktion eingebaut, um den Nutzer zu erinnern, dass ich eine Eingabe erwarte. Vielleicht kannst du es abwandeln und für eine Komponente nutzen

Delphi-Quellcode:
procedure ShakeBabyShake(Form: TForm);
var
  iLeft, iTop, iCount: Integer;
const
  wMax = 20;
begin
  with Form do begin
    iLeft := Left;
    iTop := Top;
    for iCount := 0 to 300 do begin
      Left := iLeft + (Random(wMax) - (wMax div 2));
      Top := iTop + (Random(wMax) - (wMax div 2));
      Left := iLeft;
      Top := iTop;
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShakeBabyShake(Self);
end;

Jazzman_Marburg 4. Mär 2013 11:31

AW: Wackeleffekt
 
Zitat:

Zitat von Popov (Beitrag 1205830)
procedure ShakeBabyShake(Form: TForm);

Ich lach mich schlapp "ShakeBabyShake" :-D -- das ist genau das, was ich gesucht habe. Damit werde ich mal rumspielen!

Vielen Dank :thumb:

Vielen Dank Leute, das Alles hilft mir prima!

Gruß
Jazzman

Namenloser 4. Mär 2013 11:57

AW: Wackeleffekt
 
Sehr „harmonisch“ wird es so aber wohl nicht aussehen...

Caps 4. Mär 2013 12:24

AW: Wackeleffekt
 
Zitat:

Zitat von NamenLozer (Beitrag 1205837)
Sehr „harmonisch“ wird es so aber wohl nicht aussehen...

Da fehlt die Dämpfung und die Folgerichtigkeit der Bewegung.
Man könnte auch permanent Lissajous-Figuren berechnen (da ist das "harmonische" drin) und einfach den Radius mit einer natürlichen Dampfungsfunktion (exp(-ax)) multiplizieren. Ab Auslenkung < Epsilon abschneiden, dann isses wieder endlich.

Man könnte auch mit einer zeitlich umgekehrten Dämpfung einfaden, das wäre dann rundum harmonisch und glatt und hübsch.

stahli 4. Mär 2013 12:32

AW: Wackeleffekt
 
Armin hatte hier mal eine kleine nette Animation eingebaut.

Wenn FMX eine Option wäre ... dort ist ja die Möglichkeit von Animationen direkt vorgesehen.

Jazzman_Marburg 4. Mär 2013 14:10

AW: Wackeleffekt
 
Zitat:

Zitat von stahli (Beitrag 1205850)
Armin hatte hier mal eine kleine nette Animation eingebaut.

Wenn FMX eine Option wäre ... dort ist ja die Möglichkeit von Animationen direkt vorgesehen.

Hmm... das schöne Abprallen vom linken Rand ("ToLeft") ist schon cool.
Aber FMX ist leider keine Option.


Danke & Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz