Problem mit Auto-Steuerung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Baret

Betreff: Problem mit Auto-Steuerung

BeitragMo, März 21, 2005 22:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Ich habe ein Problem mit der Stuerung eines Autos auf einer Tilemap.
Es sollte nicht das Auto bewegt, sondern die Tilemap gescrollt werden.
Ich denke mal, dass es an meinen mathematischen Fähigkeiten scheitert Embarassed

BlitzBasic: [AUSKLAPPEN]

Graphics 320,240,16,2

SetBuffer BackBuffer()

tile1=LoadImage (\"tile1.jpg\")
tile2=LoadImage (\"tile2.jpg\")
v=2 ;Geschwindigkeit
carwinkel#=0

Dim car(359)
For i=0 To 359
car(i)=LoadImage(\"car.png\")
MaskImage car(i),255,0,255
RotateImage car(i),i
MidHandle car(i)
Next

Dim Map(40,40)

Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1
Data 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1
Data 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1
Data 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1
Data 1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1
Data 1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1
Data 1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1
Data 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1
Data 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1
Data 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1
Data 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1


For y=0 To 39
For x=0 To 39
Read map(x,y)
Next
Next

Repeat
;-----------------------Bewegungen--------------------------
If KeyDown(205) Then ;Rechts
carwinkel=carwinkel+1
If carwinkel>359 Then
carwinkel=0
EndIf
EndIf
If KeyDown(203) Then ;Links
carwinkel=carwinkel-1
If carwinkel<0 Then
carwinkel=359
EndIf
EndIf
If KeyDown(200) Then ;Rauf
scrollx=scrollx-Sin(carwinkel)*v
scrolly=scrolly-Cos(carwinkel)*v
EndIf
If KeyDown(208) Then ;Runter
scrollx=scrollx+v/Sin(carwinkel)
scrolly=scrolly+v/Cos(carwinkel)
EndIf
;------------------------------------------------------------------

;-----------------------------FPS-------------------------------
Color 0,0,0
milliseks=MilliSecs()
If milliseks-startcount>=1000
startcount=milliseks
frames=frame
frame=0
Else
frame=frame+1
EndIf

;-----------------------------------------------------------------

;--------------------------Zeichnen---------------------------
Cls

For y=0 To 39
For x=0 To 39
If map(x,y) = 0 Then
DrawImage tile1,x*20+scrollx,y*20+scrolly
Else
DrawImage tile2,x*20+scrollx,y*20+scrolly
EndIf
Next
Next

DrawImage car(carwinkel),160,120
Text 10,10, \"FPS:\" + frames
Text 80,10,carwinkel
Flip
;-----------------------------------------------------------------


Until KeyHit(1)


Die verwedeten Bilder (tile1,tile2,car):
user posted image
user posted image
user posted image

Vielen Dank im Voraus!

Mfg
Baret

Diablo

BeitragMo, März 21, 2005 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm bei mir passiert garnix.... ist einfach nur ein Schwarzer Bildschirm... Shocked

Ich gucke mir das mal an... Wink

.: EDIT :.

Hm Ok habs testweise hinbekommen das ich die Strecke sehe (grün/weiß)
www.pb-software.de.vu

Meine Entwicklungsseite
  • Zuletzt bearbeitet von Diablo am Mo, März 21, 2005 22:28, insgesamt einmal bearbeitet

Baret

BeitragMo, März 21, 2005 22:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Es dauert einige Zeit bis die Auto Grafiken geladen sind!!
Hab das ganze in B3D geschrieben.

Sir Dan

BeitragMo, März 21, 2005 22:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß nicht was du hast. Bei mir geht das perfekt.
(\_/)
(O.o)
(> <) This is Bunny. Copy Bunny into your signature to help him on his way to world domination.

Diablo

BeitragMo, März 21, 2005 22:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Baret hat Folgendes geschrieben:
Es dauert einige Zeit bis die Auto Grafiken geladen sind!!
Hab das ganze in B3D geschrieben.



Ahhh das hättste mal gleich sagen sollen Very Happy
Und ich denke das funzt net ^^


Hm irgendwie ist das eine komische steuerung!! Plötzlich ist die Strecke verschwunden O_o
www.pb-software.de.vu

Meine Entwicklungsseite

Baret

BeitragMo, März 21, 2005 22:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja sobald man RUNTER drückt verschiebt sich das Auto irgendwo hin(ist aber keine Absicht Very Happy )

Aber der Fehler müsste eigentlich in diesem Bereich liegen.

BlitzBasic: [AUSKLAPPEN]

If KeyDown(200) Then ;Rauf
scrollx=scrollx-Sin(carwinkel)*v
scrolly=scrolly-Cos(carwinkel)*v
EndIf
If KeyDown(208) Then ;Runter
scrollx=scrollx+v/Sin(carwinkel)
scrolly=scrolly+v/Cos(carwinkel)
EndIf

Diablo

BeitragMo, März 21, 2005 22:37
Antworten mit Zitat
Benutzer-Profile anzeigen
das auto?? Bei mir wird garkeins angezeigt! Ich bewege nur die Strecke aber die verschwindet wenn man runter drückt also im grunde haste doch das was du willst oder nicht?


.: EDIT :.

habs bis jetzt so:

Code: [AUSKLAPPEN]

        If KeyDown(208) Then                ;Runter
                scrollx=scrollx+v+Sin(carwinkel)
                scrolly=scrolly+v+Cos(carwinkel)
        EndIf


Also statt /Sin und /Cos + Sin / Cos. ich weiß aber net ob du das so haben willst...
www.pb-software.de.vu

Meine Entwicklungsseite

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, März 21, 2005 22:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Fast richtig...
BlitzBasic: [AUSKLAPPEN]
        If KeyDown(200) Then                 ;gas 
scrollx=scrollx-Cos(carwinkel)*v
scrolly=scrolly-Sin(carwinkel)*v
EndIf
If KeyDown(208) Then ;bremse
scrollx=scrollx + v * Cos(carwinkel)
scrolly=scrolly + v * Sin(carwinkel)
EndIf


Speed immer * nehmen!

EDIT:
Ich mache das aber normal so, das ich das Auto versetzte und nicht den Hintergrund, weil ich sonst Probleme mit den anderen Sachen bekomme, wie Raketen und son Zeug

Dann zeichne ich nur mein Sichtfeld () was relativ einfach ist!
[BB2D | BB3D | BB+]
  • Zuletzt bearbeitet von Rallimen am Mo, März 21, 2005 22:55, insgesamt einmal bearbeitet

Spikespine

BeitragMo, März 21, 2005 22:48
Antworten mit Zitat
Benutzer-Profile anzeigen
normalerweise muss die X-Position um den Kosinus erhöht werden und von der Y-Position der Sinus abgezogen... habs mir aber nicht näher angeschaut...
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

Baret

BeitragMo, März 21, 2005 22:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe mich glaube ich etwas missverständlich ausgedrückt.

Ich will ein Rennspiel proggen bei dem sich das Auto immer in der Mitte des Spielfelds befindet und die Bewegung durch Scrollen des Hintergrunds zu Stande kommt.
Also so wie bei GTA.

Also wenn ich den Code kopiere in Blitz3D kopiere, abspeichere und dann die 3 Bilder in das selbe Verzeichnis kopiere, sehe ich das Auto.

Diablo

BeitragMo, März 21, 2005 22:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Na schade!! Und ich dachte ich lag richtig... Laughing

Naja aber trotzdem irgendwie eine komische steurung (zumal ich das auto net sehe [wahrscheinlich Unsichtbar])

.: EDIT :.

ich Dussel hab vor Drawimage ein ";" gesetzt!!! Rolling Eyes Wink


Aber: Wenn ich nun fahre (was mir eigendlich schon gefällt) und dann nach unten dann muss ich die tasten wächseln! Das müsstest du noch beheben.... Razz
www.pb-software.de.vu

Meine Entwicklungsseite

Baret

BeitragMo, März 21, 2005 22:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke.

Die grundlegende Steuerung funktioniert jetzt erstmal.
Hab noch -90 hinzugefügt, da sonst die rechte Seitentür beim Bewegen vorne war (weiß nicht genau wie ich das erklären soll)

BlitzBasic: [AUSKLAPPEN]

If KeyDown(200) Then ;Rauf
scrollx=scrollx-Cos(carwinkel-90)*v
scrolly=scrolly-Sin(carwinkel-90)*v
EndIf
If KeyDown(208) Then ;Runter
scrollx=scrollx + v * Cos(carwinkel-90)
scrolly=scrolly + v * Sin(carwinkel-90)
EndIf



Ein Problem habe ich allerdings noch.
Die Steuerung ist etwas zu "ungenau".
Wenn das Auto nur etwas schräg steht, bewegt es sich trotzdem noch gerade nach vor/zurück.
Ist das weil selbst Float noch zu ungenau ist für die Winkelfunktionen?

Baret

BeitragMo, März 21, 2005 23:05
Antworten mit Zitat
Benutzer-Profile anzeigen
OK hab den Fehler!
Die Steuerung ist jetzt nicht mehr ungenau!
Habe vergessen die scrollx und scrolly Variablen als Float zu deklarieren. Embarassed

Vielen Dank für Eure Hilfe!

Mfg
Baret
 

Killer999

BeitragMo, März 21, 2005 23:57
Antworten mit Zitat
Benutzer-Profile anzeigen
hab mal ne frage hier zu ^^

kannst du mir erklären was dies zu bedeuten hat?

Dim car(359)
For i=0 To 359
car(i)=LoadImage("car.png")
MaskImage car(i),255,0,255
RotateImage car(i),i
MidHandle car(i)
Next

für was ist das nötig?

@ndinho

BeitragDi, März 22, 2005 10:23
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist die drehung vom Auto = 360°
User posted image

Mein PC: AMD 3000+ / 1024 DDR-Ramm 400 / Geforce 6800
Meine Lieblingsspiele: World of Warcraft, Warcraft III, Pro Evolutions Soccer 4, Blitz Basic Smile

Spikespine

BeitragDi, März 22, 2005 10:51
Antworten mit Zitat
Benutzer-Profile anzeigen
In das array car werden mithilfe der For-Schleife und RotateImage in jeden Feldeintrag car(n) die Rotation des autos um n grad gespeichert.

Spike
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

Baret

BeitragDi, März 22, 2005 14:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Man speichert in jedes Feld ein Bild des Autos.( car(1)=...,car(2)=...,usw.)
Jedes dieser Bilder ist um 1 Grad weiter rotiert als das Vorherige.
Das heißt im Feld car(0) ist das Auto in der Ausgangspostition, im Feld car(90) ist es um 90 Grad gedreht,usw.!
Mit Maskimage legt man eine Transparente Farbe fest damit nur mehr das Auto zu sehen ist und nicht dessen Hintergrund!,
Und mit MidHandle legt man den Bezugspunkt der Grafik genau in die Mitte(normalerweise ist dieser Links/Oben)

Hoffe ich konnte dir damit etwas helfen?!

Mfg
Baret
 

Killer999

BeitragDi, März 22, 2005 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
jo hat mir geholfen

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group