Zahl einer Zweiten annähern?
Übersicht

PacManiBetreff: Zahl einer Zweiten annähern? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bin ein Mathe-Noob und obendrein ist heute nicht mein Tag ![]() 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. |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Entweder, du definierst einen Toleranzbereich:
BlitzBasic: [AUSKLAPPEN] If NCar\Speed>0.15 Then 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 BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
mpmxyzBetreff: Re: Zahl einer Zweiten annähern? |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzBasic: [AUSKLAPPEN] If NCar\Speed>0.15 Then So etwas? In Allgemein: BlitzBasic: [AUSKLAPPEN] If Abs(Ist-Soll)<Rate mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dank an beide, probiere nun Holzchopfs Methode 2 aus, denke aber sie ist genau das was ich suche ![]() 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 ![]() ![]() Ich hoffe ich frag nicht zuviel... habe gerade leider keine Ideen ![]() |
||
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 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 mfg Thunder |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group