Auto bewegen, Beschleunigen, Lenken

Previous topic - Next topic

backslider

Hallo liebes GLBasic-Forum!

Ich bin zwar schon einige Zeit hier im Forum angemeldet, habe jedoch noch nicht so richtig viel mit GLBasic gemacht. Das soll sich jetzt ändern und darum werde ich auch Gernot unterstützen und mir wohl nachher die Vollversion kaufen  :good:

Ich habe auch schon eine erste Frage, nachdem ich die mitgelieferten Tutorials und Befehle größtenteils durchgearbeitet habe. Ich bin gerade testweise dabei, ein Auto zu schreiben, welches erstmal nur fahren kann (später vielleicht noch mehr, ist halt nur zum Üben  ;/ ). So und da auch schon mein eigentliches Problem, das Auto (rotosprite) kann derzeit beschleunigen und wenn man vom Gas geht, dann "rollt" es aus. Allerdings auch nur in eine Richtung  =D und ich weiß nicht so recht wie ich mein auto "gelenkt" bekomme und habe hier im Forum nichts derartiges gefunden. sin/cos oder atan? Oder ganz anders? =) Wenn ihr mir einen Tipp geben könntet, oder mich auf einen Thread mit Lösung führen könntet, wäre ich euch sehr dankbar!  ;/

P.S. ich habe den Code gerad leider nicht hier, da ich auf Arbeit bin, aber ich denke das ist ein verständliches "Problem" =)

Gruß

Kitty Hello

Jo.

Du muss beschleunigen in die aktuelle Richting in die Du schaust.
Dazu ist's wohl das einfachste pro Auto eine Richtung (Winkel relativ zur X-Achse) und eine Geschwindigkeit in diese Richtung zu haben.
Dann Addierst Du einfach COS(winkel) * Geschwindigkeit zur X-Position, und -SIN(winkel)*Geschw. zur Y-Position
Code (glbasic) Select

// Auto bauen (1965'er Fort Transit)
DRAWRECT 0,0,32,32,RGB(255,255,255)
DRAWRECT 24,2,4,12,RGB(128,255,255)
GRABSPRITE 0,  0,0,32,16


LOCAL auto_dir, auto_spd
LOCAL auto_x, auto_y

WHILE TRUE
INC auto_dir, KEY(203) - KEY(205)
INC auto_spd, (KEY(200) - KEY(208)) * 0.2 // hier kann man die PS-Zahl erhöhen

// auto verlangsamen
auto_spd = auto_spd * 0.9 // Hier die Windkraft anpassen

// auto bewegen
INC auto_x, auto_spd *  COS(auto_dir)
INC auto_y, auto_spd * -SIN(auto_dir)

ROTOSPRITE 0, auto_x, auto_y, auto_dir
SHOWSCREEN

WEND


backslider

Vielen Dank für die schnelle Antwort!

Werde ich nachher gleich einmal ausprobieren :)