GTA problem

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

klausklapper

Betreff: GTA problem

BeitragMo, Jul 16, 2007 18:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, ich hab jetzt mal ne GTA steuerung angefangen. Die funktioniert auch schon recht ordnetlich, doch hier mein Problem:

Nach vorne kann ich laufen, ich kann mich auch wunderbar drehen, wenn ich allerdings gleichzeitig laufe, und drehe mich in die eine richtung, läuft er vorwärts und dreht sich gleichzeitig, wenn ich mich allerdings in die andere richtung drehe, dann dreht er sich nur obwohl er ja gleichzeitig auch vorwärts laufen müsste.

Hier ist mal der Code für euch:

Code: [AUSKLAPPEN]
AppTitle "Rasenmäherrennen"
Graphics 800,600,32,2
SetBuffer BackBuffer()


posx#=100
posy#=100
winkel=0
Dim ImPlayer(359)
TFormFilter 1

;Laden des Spielers
For n=0 To 359
   ImPlayer(n)=LoadImage("gfx/mower.png")
   MaskImage ImPlayer(n),255,0,255
   RotateImage ImPlayer(n),n
   
Next


Color 0,0,0
ClsColor 255,255,255

;Hauptschleife/Mainloop
Repeat
Cls

If KeyDown(203) Then winkel=winkel-1
If KeyDown(205) Then winkel=winkel+1

If KeyDown(200)
posx#=posx#+Cos(winkel)
posy#=posy#+Sin(winkel)
EndIf

If winkel>359 Then winkel=0
If winkel<0 Then winkel=359

DrawImage ImPlayer(winkel),posx#,posy#

Flip
Until KeyHit(1)
End


Ich hoffe ihr könnt mir helfen

MFG,
KlausK.
  • Zuletzt bearbeitet von klausklapper am Mo, Jul 16, 2007 20:33, insgesamt einmal bearbeitet

Silver_Knee

BeitragMo, Jul 16, 2007 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
1. editiere mal deinen post, markiere deinen code und drücke den button Code unter den smilies

2. Ich verstehe dein prob nicht wirklich ich hab bei mir loadimage mal durch createimage ersezt (weil ich kein bild zum laden habe) und da geht alles prima man kann vorwärts fahren sich nach rechts und nach links drehen während des fahrens und im stehen.

3. damit die kurven besser aussehen soltest du folgendes schreiben:
Code: [AUSKLAPPEN]
;Laden des Spielers
For n=0 To 359
ImPlayer(n)=LoadImage("gfx/mower.png")
MIDHANDLE ImPlayer(n);<------------------DAS DA REINSCHREBEN
MaskImage ImPlayer(n),255,0,255
RotateImage ImPlayer(n),n

damit "nimmst" du die image nicht an ner ecke wenn du sie drehst sondern in der mitte. das sieht schöner aus.
 

klausklapper

BeitragMo, Jul 16, 2007 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
dankeschön, das hat mein Problemchen gelöst ;]
 

Lador

BeitragMo, Jul 16, 2007 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
FTC: Ich verstehe sein Problem.

Noch ein paar Sachen, klausklapper:
1. So ein ähnliches Problem war erst vor Kurzem -> bitten Forensuche benutzen!
2. TFormFilter solltest du 0 machen, dann bleiben keine rosa Kanten an deinem Rasenmäher.
3. Vielleicht hast du das Problem, weil du dein Bild falsch gedreht hast, also die Spitze deines "Rasenmähers" zeigt nach oben, muss aber nach rechts zeigen.
4. Es gibt einige Tutorials, die dasselbe Thema behandeln. Auf robsite.de gibt es eines, und auf Szene -> Links -> Tutorials -> Winkel (http://www.chaos-interactive.de/tuts/winkel.html) findest du auch eines.
5. Hier der Code:

Code: [AUSKLAPPEN]
AppTitle "Rasenmäherrennen"
Graphics 800,600,32,2
SetBuffer BackBuffer()


posx#=400
posy#=300
winkel=0
Dim ImPlayer(359)
TFormFilter 0

;Laden des Spielers
ImPlayer(0)=LoadImage("mower.png")
MaskImage ImPlayer(n),255,0,255
For n=1 To 359
ImPlayer(n)=CopyImage(ImPlayer(0))
MaskImage ImPlayer(n),255,0,255
RotateImage ImPlayer(n),-n
Next


Color 0,0,0
ClsColor 255,255,255

;Hauptschleife/Mainloop
Repeat
Cls

Text 0,0,"Winkel: "+winkel

If KeyDown(203) Then winkel=winkel+1
If KeyDown(205) Then winkel=winkel-1

If KeyDown(200)
posx#=posx#+Cos(winkel)
posy#=posy#-Sin(winkel)
EndIf

If winkel>359 Then winkel=0
If winkel<0 Then winkel=359

DrawImage ImPlayer(winkel),posx#,posy#

Delay 20
Flip
Until KeyHit(1)
End


Erklärung:
Ich habe es ein bisschen verändert, denn es ist angeblich schneller, wenn du das Bild nicht 360 mal lädst, sondern es kopierst (CopyImage).
Wenn ein Winkel > 0 ist, dann dreht er sich nach links (gegen den Uhrzeigersinn), deshalb habe ich bei KeyDown(203), winkel=winkel+1 nicht -1 gemacht.
Du hast das Bild außerdem im falschen Winkel gedreht (RotateImage ImPlayer(n),-n).
Der Rest der Erklärung steht oben bei 3.

Hoffe das konnte dir helfen.

MFG Lador

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group