Diagonale Bewegung

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

DesertEagle

Betreff: Diagonale Bewegung

BeitragMi, Jun 03, 2009 0:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich programmiere im moment für Informatik ein kleines 2D spiel. Ziel des spieles ist es mit seinem Spieler, Gegnern auf der Karte, auszuweichen. Die Bewegung vom Spieler hab ich so gemacht:

If KeyDown (208) Then
skoordinate_y=skoordinate_y+5
ausrichtung=1
EndIf
If ausrichtung=1
DrawImage (spieler,skoordinate_x,skoordinate_y)
EndIf

If KeyDown (203) Then
skoordinate_x=skoordinate_x-5
ausrichtung=2
EndIf
If ausrichtung=2
DrawImage (spieler_links,skoordinate_x,skoordinate_y)
EndIf


If KeyDown (205) Then
skoordinate_x=skoordinate_x+5
ausrichtung=3
EndIf
If ausrichtung=3
DrawImage (spieler_rechts,skoordinate_x,skoordinate_y)
EndIf


If KeyDown (200) Then
skoordinate_y=skoordinate_y-5
ausrichtung=4
EndIf
If ausrichtung=4
DrawImage (spieler_oben,skoordinate_x,skoordinate_y)
EndIf

Wenn ich jetzt allerdings 2 Tasten gleichzeitig drücke werden einfach die 2 Bilder übereinander gemalt.
Wie kann ich dem sagen das der, falls z.B. unten und links gedrückt wird, der Spieler in richtiger Position malen soll?

Vielen Dank
MfG DesertEagle

WüstLing

BeitragMi, Jun 03, 2009 0:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi DesertEagle,

Herzlich Willkommen hier im Forum!

Zu erst eine kleine Bitte: Verwende die Code-Tags, wenn du hier Code postest.

Dies machst du entweder mit: [ code ] *Der Code* [ /code ] (ohne Abstand)
oder mit [ syntax="bb" ] *Der Code* [ /syntax ]

Nun zu deinem Code:

Wozu verwendest du die Variable "ausrichtung"?

In deinem Code steht, dass wenn man eine Taste drückt, das Bild auf den Bildschirm angezeit wird.
Du willst aber, dass das Bild nur einmal angezeigt wird, folglich begötigst du DrawImage nur einmal.[/code]

P.S.: Ich glaube falsches Forum, aber das machen dann schon die Mods Wink
 

DesertEagle

BeitragMi, Jun 03, 2009 0:40
Antworten mit Zitat
Benutzer-Profile anzeigen
"ausrichtung" is dafür da, das der Spieler dahin guckt, in welche Richtung man zuletzt gefahren ist. Ohne das wurde der Spieler immer wieder so gemalt wie der zu beginn des Spieles steht.

DesertEagle

ComNik

BeitragMi, Jun 03, 2009 9:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde es ganz anders machen^^

Trotzdem erstmal Herzlich Willkommen!

Ich würde erstmal deinen Spieler als Animation abspeichern. Dann musst du dir die Frames anschauen, an denen der Spieler die Richtung wechselt. Also z.B (l = links; r= rechts,o = oben; u= unten):
Dein Bild sieht so aus: oooo
rr r r
l l l l
uuuu

Ich hoffe das ist verständlich Rolling Eyes
Immer weiter:
Du speicherst den Richtungswechsel in einer variable also:
Code: [AUSKLAPPEN]

      Global links = 8
      Global rechts = 4
      Global oben = 0
      Global unten = 12
 


Nun brauchst du noch die Variable player_richtung (oder englisch player_dir^^).

NUn folgender (Pseudo) Code:
Code: [AUSKLAPPEN]

      If KeyDown(links)
        player_richtung = links
       ; Bewegen (x und y etc...)
      end if
      if keydown(rechts)
        player_richtung = rechts
       ; Bewegen...
      end if
   

Das ganze auch noch für oben und unten,

UNd dann schreibst du EINMAL iin der Main Loop:
Code: [AUSKLAPPEN]

    DrawImage(<deinSpielerBild>,player_x,player_y,player_richtung)    <-- Player Richtung gibt also das Frame an
 


Dann noch animieren und fertisch^^

Das war sehr unverständlich wenn du fragen hast, schreib mir ne pn Smile

lg
ComNik
WIP: Vorx.Engine

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group