Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

12.11.2005, 14:42

Sinusbewegung

Wie lässt man am besten Fuguren in einer Sinusform bewegen?

Ich habe das mal mit

radius*sin(winkel)+x_verschiebung
radius*cos(winkel)+y_verschiebung

gemacht. Durch verändern des Radius und hinzuaddieren zur Verschiebung bekomme ich ein paar schöne Effekte. Doch irgentwie habe ich keine Kontolle über die Bewegung. Ich muss halt immer wieder rumprobieren. Gibt es da noch andere Lösungswege?

2

12.11.2005, 15:06

Könntest du das ein bisschen konkretisieren? Welches Problem hast du genau?
Mein Projekt: Rise of the Sylvan

Anonymous

unregistriert

3

12.11.2005, 15:53

Also, ich verwende die obige Formel. Ich bekomme Probleme bei der Geschwindigkeit. Jetzt verwende ich float Werte für die Verschiebung. Obwohl ich in 2D Programmiere und für die Positionierung int benötige.

Und wie bekomme ich eine schöne Sinus bewegung hin. Also auf und abbewegende Objekte.

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

4

12.11.2005, 16:32

C-/C++-Quelltext

1
YPos = sin(g_fTime)+fObjectHeight;

so als ganz grobes Beispiel;
Oder meinst du was anderes?
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

Anonymous

unregistriert

5

12.11.2005, 16:38

Warum sin(g_fTime) ? Was hat Zeit damit zu tun? Was meinst du mit Zeit? Sekunden, Millisekunde und bis zu welchem Wert kann ich Time verwenden? 1000, 100000, 1000000000, ....?

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

6

12.11.2005, 17:27

die Zeit war jetzt nur mal nen beispiel...
wenn du ne bewegung haben willst, musst du der sinus funktion nen faktor übergeben, der sich irgendwie mit der zeit verändert, sonst tut sich ja nix.
deswegen hab ich hier die zeit genommen, was du nimmst is letztendlich egal.
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

7

13.11.2005, 12:29

C-/C++-Quelltext

1
radius*sin( winkelgeschwindigkeit * zeit ) + verschiebung


Dabei sind normalerweise radius, winkelgeschwindigkeit und verschiebung Konstanten während die zeit "läuft".

Sinus bekommt ja den Drehwinkel als Parameter. Dieser soll sich ja mit der Zeit immer vergrößern. Sagen wir z.B. Du willst pro 5 Sekunden eine Umdrehung. Am Anfang ist Zeit = 0 und daher der Winkel Null. Am Ende soll der Winkel 2*pi sein (sin arbeitet im Bogenmaß). Wenn zeit in Sekunden ist, dann muss also gelten:

winkelgeschwindigkeit * 5.0 = 2.0*pi

d.h.

winkelgeschwindigkeit = 2.0*pi/5.0
"Games are algorithmic entertainment."

Werbeanzeige