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

1

10.07.2009, 15:05

"beschleunigung"

also angenommen ich habe ein programm das einen punkt ausgibt und wenn ich eine von den pfeiltasten drücke wegegt er sich in die jeweilige richtung.
nun möchte ich eine geschwindigkeitssteigerung programmieren das heist wenn ich auf eine der tasten drücke bewegt sich der punkt mit steigende geschwindigkeit in die jeweilige richtung und wenn ich wieder loslasse bremmst er ab und kommt zum stillstand.

kann mir bitte jmd sagen wie der code ca aussehen würde???

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

10.07.2009, 15:13

Wie "orginalgetreu" willst du es denn machen? Gibt da einige Möglichkeiten.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

3

10.07.2009, 15:14

schreib mal ein beispiel(oder mehrere)
ich werd dann sehn was am besten ist

Errschaffer

Alter Hase

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

4

10.07.2009, 15:17

Das kannst du über einen Timer regeln. Du prüfst erstmal wie lange eine bestimmte Taste schon gedrückt wird. Und dann kannst du ja z.B alle 2sek die Geschwindigkeit um so und so viel erhöhen.Und sobald die Taste losgelassen wird reduzierst du die Geschwindigkeit eben alle 2sek (b.z.w mehr oder weniger) bis sie 0 erreicht.

Wie du das Codetechnisch löst ist deine Sache. Aber so schwer ist das nicht.
edit: code nachtrag kommt gleich

5

10.07.2009, 15:18

ja das mit der zeit hab ich auch schon probiert aber hat nicht so ganz hingehauen XD

Gotbread

Alter Hase

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

6

10.07.2009, 15:25

Vector position // startposition des punktes
Vector velocity // geschwindigkeit des punktes
Vector acceleration // beschleunigung des punkts

in jedem bild bewegst du die position um die geschwindigkeit mal vergangene zeit fort:

position += velocity * t // t ist die zeit seit dem letzen bild

und außerdem veränderst du die geschwindigkeit um die beschleunigung mal zeit:

velocity += acceleration * t;

und die beschleunigung wird dann entsprechend der gedrückten taste gesetzt:

if (keydown(LEFT))
acceleration.x = -1;

oder so ähnlich.

wenn der punkt langsam abbremsen soll (reibung) dann verringert man
die geschwindigkeit um einen bestimmten wert, der auch von der
zeit abhängt:

velocity *= pow(0.90, t); // bremst pro sekunde um 10%
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

7

10.07.2009, 15:28

ok danke so mach ichs^^

8

10.07.2009, 15:54

Wenn es realistisch sein soll:

http://www.opel-rekord-p2.de/technik/tbeschl.htm

Ist zwar alt, sieht aber heute auf jedenfall noch ähnlich aus.

Ich würde es so machen, das beim start dein Objekt langsam schneller wird, bis er eine Sekunde beschleunigt hat, dann würde ich ihn die nächsten 3 sekunden ein bisschen schneller beschleunigen, und ab der 4. Sekunde wieder in jedem Schleifendurchlauf langsamer werden, bis die höchstgeschwindigkeit erreicht ist. Wenn du ne Gangschaltung drinnhaben willst kannst ab einer bestimmten Geschwindigkeit einfach 1 Sekunde deine Beschleunigungsschleife aussetzen.

Bei der Bremsung würd ich einfach so ähnlich vorgehen. (Da musst du halt unterscheiden ob du eine vollbremsung durchführst, dein objekt ausrollen lässt oder nur teilweise bremst) Da wird das Objekt exponentiell abgebremst. D.h. auf einen schlag schnell langsamer und dann dauert es eine weile bis es ganz zum stehen kommt.
Kannst ja die Formel für den Bremsweg mitbenutzen. Für Meter würd ich dann halt Pixel benutzen^^

Also ich persönlich finde das ziemlich einfach. Wenn dus nicht hinbekommst kann ich mal ein kleines Programm schreiben.

Werbeanzeige