Zahl einer Zweiten annähern?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

PacMani

Betreff: Zahl einer Zweiten annähern?

BeitragFr, März 19, 2010 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Bin ein Mathe-Noob und obendrein ist heute nicht mein Tag Very Happy
Ich möchte die Geschwindigkeit meines Autos an eine festgelegte annähern. Allerdings klappt das nicht so super. Hier mein derzeitiger Code erstmal, er steht in der Hauptschleife:
Code: [AUSKLAPPEN]
If NCar\Speed>0.15 Then
            NCar\Speed=NCar\Speed-0.002
         Else
            NCar\Speed=NCar\Speed+0.002
         End If

Da die aktuelle Geschwindigkeit stark im Nackommastellenbereich liegt (0.104289 etc.), wird exakt 0.15 nie erreicht und die Geschwindigkeit wackelt dann immer hin und her.
Wie kann ich die Geschwindigkeit 0.15 annähern? Brauche diese "Annäherungen" auch für Drehungen etc. weswegen etwas "universelles" ganz praktisch wäre.

Holzchopf

Meisterpacker

BeitragFr, März 19, 2010 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Entweder, du definierst einen Toleranzbereich:
BlitzBasic: [AUSKLAPPEN]
If NCar\Speed>0.15 Then 
NCar\Speed=NCar\Speed-0.002
ElseIf NCar\Speed<0.14 Then
NCar\Speed=NCar\Speed+0.002
End If


Oder du arbeitest mit einer Formel, die der Realität sogar noch ein wenig näher kommt (Beschleunigungskraft abhängig von der aktuellen Geschwindigkeit und solcher Blah):
BlitzBasic: [AUSKLAPPEN]
NCar\Speed=(0.15-NCar\Speed)*0.02


mfG
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

mpmxyz

Betreff: Re: Zahl einer Zweiten annähern?

BeitragFr, März 19, 2010 17:20
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
If NCar\Speed>0.15 Then
NCar\Speed=0.15
Else
NCar\Speed=NCar\Speed+0.002
EndIf

So etwas?
In Allgemein:
BlitzBasic: [AUSKLAPPEN]
If Abs(Ist-Soll)<Rate
Ist=Soll
ElseIf Ist>Soll
Ist=Ist-Rate
Else
Ist=Ist+Rate
EndIf

mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
 

PacMani

BeitragFr, März 19, 2010 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Dank an beide, probiere nun Holzchopfs Methode 2 aus, denke aber sie ist genau das was ich suche Smile

Also irgendwie funktioniert das nicht so, wie ich das möchte trotz rumprobieren mit euren Codes... ich beschreibe mein Problem mal genauer:
Ich habe hier ein Auto, was via X-Geschwindigkeit und Z-Geschwindigkeit verschoben wird. Beide Geschwindigkeiten können positiv oder negativ sein. Nun gibt es dort eine Art "Boostplatte" auf dem Boden, die den Spieler in eine Richtung schleudert. Dazu müssen X- und Z-Geschwindigkeit angepasst werden. Das sieht ungefähr so aus:
Code: [AUSKLAPPEN]
If NCar\SledDelay>ms Then
   Select NCar\SledDirection
      Case 1 ;up
         NCar\XSpeed=NCar\XSpeed/1.05
         NCar\ZSpeed=0.15
      Case 2 ;down
         NCar\XSpeed=NCar\XSpeed/1.05
         NCar\ZSpeed=-0.15
      Case 3 ;left
         NCar\XSpeed=-0.15
         NCar\ZSpeed=NCar\ZSpeed/1.05
      Case 4 ;Right
         NCar\XSpeed=0.15
         NCar\ZSpeed=NCar\ZSpeed/1.05
   End Select
End If

Der Boost hält natürlich nur eine gewisse Zeit (SledDelay) und es gibt vier verschiedene Richtungen in die die Boostplatten hinzeigen (s. Select-Anweisung). Das oben funktioniert wie es soll. Allerdings soll die Geschwindigkeit langsam angepasst werden (und nicht mit NCar\XSpeed=0.15 sofort festgelegt). Hier mal eine kleine Zeichnung Wink
user posted image
Ich hoffe ich frag nicht zuviel... habe gerade leider keine Ideen Sad

Thunder

BeitragFr, März 19, 2010 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest für X und Z auch Beschleunigungswerte in den Type nehmen. Wenn das Fahrzeug auf eine Boostplatte fährt, reicht es die Beschleunigungswerte linear zu ändern:

BlitzBasic: [AUSKLAPPEN]
NCar\XBeschleunigung=NCar\XBeschleunigung-0.05
NCar\ZBeschleunigung=NCar\ZBeschleunigung-0.05


Wenn du nun nämlich die Beschleunigung zur Geschwindigkeit addierst entsteht (nehme ich mal an) ein quadratischer Zusammenhang:

BlitzBasic: [AUSKLAPPEN]
NCar\XSpeed=NCar\XSpeed+NCar\XBeschleunigung
NCar\ZSpeed=NCar\ZSpeed+NCar\ZBeschleunigung



mfg Thunder
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group