rennstrecke

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

totonak5

Betreff: rennstrecke

BeitragDo, Dez 02, 2004 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
hi!

ich möchte ein 2d rennspiel machen.
vorerst geht es bei der strecke nur aufwärts (gerade aus).

ich habe meinen quelltext jetzt stark vereinfacht.
nehmen wir an die strecke, die ich auf einem grafikprogramm gezeichnet habe ist 640x3000 pixel groß.

wie mache ich es, dass sich die geschwindigkeit der fortbewegung der rennbahn verlangsame, wenn das auto auf die seite fährt?

Code: [AUSKLAPPEN]

Graphics 640,480
SetBuffer BackBuffer()

bild = LoadImage("auto.png")
Hintergrund = LoadImage("hintergrund.png")
strecke = LoadImage("Strecke.png")

Dim Auto(359)

For Winkel = 0 To 359
 Auto(Winkel) = CopyImage(bild)
 RotateImage auto(Winkel), Winkel - 90
 MidHandle auto(Winkel)
Next

X# = 300
Y# = 300

YStrecke = -3000

Repeat
 Cls

 TileBlock hintergrund
 DrawImage Strecke,0,YStrecke

 If KeyDown(203) Then Winkel= Winkel - 0.8
 If KeyDown(205) Then Winkel= Winkel + 0.8

 If Winkel > 359 Then Winkel = 0
 If Winkel < 0   Then Winkel = 359

 If KeyDown(200) Then
  Geschwindigkeit = 5
  x = X - Cos(Winkel) * Geschwindigkeit
 EndIf

 If Not KeyDown(200) Then geschwindigkeit = 0

 YStrecke = YStrecke + geschwindigkeit

 DrawImage auto(Winkel),X,Y

 Flip
Until KeyHit(1)


danke im voraus
lg
Just for Fun!
Jesus loves U!

Firstdeathmaker

BeitragDo, Dez 02, 2004 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
setze für die Geschwindigkeit eine Variable ein (speed) und frage bei jedem Durchlauf ab ob die x Position des Autos noch innerhalb der Rennstrecke liegt. Wenn ja, packe die Geschwindigkeit auf 5, wenn nicht, packe sie auf 4 oder was du halt willst.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

totonak5

BeitragDo, Dez 02, 2004 18:28
Antworten mit Zitat
Benutzer-Profile anzeigen
das meine ich nicht!

wenn kurven fahre, wird die vorwärtsbewegung langsamer, weil die seitwärtsbewegung schneller wird, verstehst du was ich meine?
Just for Fun!
Jesus loves U!

Hubsi

BeitragDo, Dez 02, 2004 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Berechne die Differenz seit dem letzten verändern der Positionsvariablen des Autos und diesen Wert benutzt Du zum bewegen der Map.

Btw: die eine oder andere Graka könnte mit dem verwalten eines solch großen Bildes Probleme haben und Fehler bei der Darstellung machen. Eine Tilemap wäre wohl speicherschonender, zuverlässiger und flexibler Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Firstdeathmaker

BeitragDo, Dez 02, 2004 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Sagen dir Cos und Sin was? Damit könntest du die Geschwindigkeit nach vorne abhängig vom Drehwinkel des Autos berechnen.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

totonak5

BeitragDo, Dez 02, 2004 18:51
Antworten mit Zitat
Benutzer-Profile anzeigen
naja ein bisschen kenne ich mich mit dem aus. aber wie ich das ausrechnen könnte weis ich nicht.

könntest du mir da helfen?
Just for Fun!
Jesus loves U!

Firstdeathmaker

BeitragDo, Dez 02, 2004 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, könntest du deine Frage von oben mal etwas genauer schildern?

Möchtest du nun, wenn das Auto eine Kurve fährt die Geschwindigkeit nach oben verringern (Das hast du in dem Code doch schon gelöst, oder)?

Oder möchtest du, wenn das Auto auf einen Seitenstreifen fährt die Geschwindigkeit verringern?
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

totonak5

BeitragDo, Dez 02, 2004 20:28
Antworten mit Zitat
Benutzer-Profile anzeigen
ja, ich möchte, wenn ich eine kurve mache, dass sich die geschwindigkeit nach oben verringert.
Just for Fun!
Jesus loves U!
 

ke^kx

BeitragDo, Dez 02, 2004 20:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann kannst du doch den Winkel des Autos nehmen und die Geschwindigkeit abhängig davon verändern, oder mache ich da einen Denkfehler?

Jiriki
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM
 

totonak5

BeitragDo, Dez 02, 2004 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
es würde vielleicht so funktionieren, aber da muss ich mir für jeden winkel die geschwindigkeit ausrechnen und dann gäbe es noch jede menge schreibarbeit.
ich meine vielleicht kann man es doch, wie Firstdeathmaker schon gesagt hat mit cos und sin machen!?

lg
Just for Fun!
Jesus loves U!
 

ke^kx

BeitragDo, Dez 02, 2004 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso, wenn du es mit einer Formel machst, sollte das eigentlich kein Problem sein, oder?

Vielleicht so (angenommen dein 0° Winkel ist nach oben):

Code: [AUSKLAPPEN]

Geschwindigkeit# = 5 - (Winkel / 100) ;5 sollte dabei der normale speed
sein


Kann sein, dass du am Verhältniss noch etwas feilen musst, aber gennerell sollte es so funktionieren.

Jiriki
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM
 

totonak5

BeitragDo, Dez 02, 2004 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
ja ich könnte es im prinzip so probieren.
also viel feilen wäre angesagt Wink

90° zeigt immer nach oben...
Just for Fun!
Jesus loves U!
 

ke^kx

BeitragDo, Dez 02, 2004 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann dreh entweder dein Bild oder nimm die Formel:

Code: [AUSKLAPPEN]

Winkel = Winkel - 90

If Winkel < 0 then Winkel = Winkel + 360

.
.         ;hier meine Formel
.

winkel = winkel + 90


Aber einfacher wäre es, wenn du das Bild in fahrtrichtung drehst (du fährst doch nach oben, oder?)

Jiriki
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM
 

BIG BUG

BeitragDo, Dez 02, 2004 22:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum nicht einfach:
Code: [AUSKLAPPEN]
YStrecke = YStrecke + geschwindigkeit * Sin(winkel)


Außerdem
- sollte es reichen, wenn du die Grafik in 3 oder 5 Grad Winkeln ablegst
- Winkel + 0.8 entspricht Winkel + 1, solange diese Variable nicht als Float (Winkel#) definiert ist
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

Firstdeathmaker

BeitragDo, Dez 02, 2004 23:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast doch auch schon für die Seitwärtsbewegung so etwas in der Art geschrieben:

Zitat:
x = X - Cos(Winkel) * Geschwindigkeit


Das gleiche jetzt nochmal für die geradeausgeschwindigkeit aber mit Sinus.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

ke^kx

BeitragFr, Dez 03, 2004 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist doch gar nicht sein Problem, oder? Ich dachte er wollt, das das Auto langsamer wird, wenn es sich dreht. Wenn es nur um die vorwärts Bewegung geht, dann ist es glaub ich immer so:

Code: [AUSKLAPPEN]
 
x = x - Cos(Winkel) * Geschwindigkeit
y = y + Sin(Winkel) * Geschwindigkeit


Jiriki
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM

Travis

BeitragFr, Dez 03, 2004 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe hier mal was für euch. Ursprünglich wollte ich auch mal ein 2D-Renner machen, habe dann aber abgebrochen. Um die Fahreigenschaften zu testen, habe ich ein extra Programm geschrieben. Vielleicht kannst du noch was draus lernen.

[url]www.funforge.org\Public\GTA.rar[/url]
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.
 

totonak5

BeitragSa, Dez 04, 2004 0:30
Antworten mit Zitat
Benutzer-Profile anzeigen
danke, leute!

ich habe das problem mit dem tip von big bug gelöst. danke!

lg
aron
Just for Fun!
Jesus loves U!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group