![]() |
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 |
AW: Wackeleffekt
IIRC waren hier ganz nette Beispiele dabei:
![]() |
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 |
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; |
AW: Wackeleffekt
Zitat:
Vielen Dank :thumb: Vielen Dank Leute, das Alles hilft mir prima! Gruß Jazzman |
AW: Wackeleffekt
Sehr „harmonisch“ wird es so aber wohl nicht aussehen...
|
AW: Wackeleffekt
Zitat:
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. |
AW: Wackeleffekt
Armin hatte
![]() Wenn FMX eine Option wäre ... dort ist ja die Möglichkeit von Animationen direkt vorgesehen. |
AW: Wackeleffekt
Zitat:
Aber FMX ist leider keine Option. Danke & Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz