Objekte (z.B eine Person) auf Knopfdruck drehen

Übersicht BlitzBasic Allgemein

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

BigMaexle

BeitragMo, Nov 26, 2007 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal Schnäggli92:
Du schreist hier du wärst der noobigste noob den die noob-Welt je genoobt hat. Das nervt Rolling Eyes. Und für Anfänger wie dich gibts ja auch den Beginners-Corner. Hier ist eher das Forum für "höhere" Probleme

flona hat Folgendes geschrieben:

Ich nehme an D2006 meint das so:


Ich nehme an D2006 meint das so, dass er nicht für jeden Winkel einen Bild gibt sondern für 5 Winkel ein Bild nimmt, so wie bei dir wird ja die Spiel-Mechanik verändert.

Und mit den Collide: etwas unschön aber du kannst ja das Auto apprallen lassen, also Code: [AUSKLAPPEN]
Speed = -1
. Das is jedenfalls eine einfache Methode.

Das mit den Balken könnte vielleicht daran liegen, dass du ql:Maskimage verwendest ohne wirklich zu wissen was es heißt.
255,0,255 ist der Code für Rosa, knallige Rosa. und das sollte der Hintergrund Für Bilder in der Datei sein. Weil Rosa wird ja im eigentlichen Bild nicht verwendet (außer du willst Barbie-Spiele machen Laughing ). Deshalb kann es als Hintergrund weggeschnitten werden. WEnn du aber in der Datei einen Schwarzen Hintergrund hast dann wird er das Schwarze zeichen, es ist ja kein Rosa.

Schnäggli92

BeitragMo, Nov 26, 2007 19:43
Antworten mit Zitat
Benutzer-Profile anzeigen
ok danke aber warum gibt es manchmal mit dem code eine runtime error : Illegal memory address??

das wurgel

BeitragFr, Dez 28, 2007 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab dein Programm mit eigenen Bildern getestet und bei mir kam kein "Illegal Memory Address". Aber mir sind da ein paar Sachen aufgefallen.
Das Bild "Lv1" ist als JPG gespeichert. Für Bilder, die für Kollision gebraucht werden ist das schlecht, denn der Hintergrund ist dann kein reines schwarz mehr.
Der Rahmen um das Bild entsteht, weil beim drehen des Bildes das Bild mehr Platz braucht und dieser Platz hat die Farbe der Hintergrundfarbe des Bildes. Deswegen müsste es anstatt so:
Code: [AUSKLAPPEN]

   RotateImage player(winkel),winkel+90
   MaskImage player(winkel),255,0,255

so heißen:
Code: [AUSKLAPPEN]

   MaskImage player(winkel),255,0,255
   RotateImage player(winkel),winkel+90

Um eine perfekte Kollision hinzukriegen führte leider kein Weg dran vorbei, die Kollision zweimal abzufragen.
Code: [AUSKLAPPEN]

   Cls

   winkel_vorher = winkel
   
   If KeyDown(203) Then winkel= winkel -speed ; wenn linker pfeil dann dreht sich der player nach links
   If KeyDown(205) Then winkel= winkel +speed ; wenn rechter pfeil dann dreht sich der player nach rechts
   If winkel > 359 Then winkel = 0 ; wenn der winkel bei 359 angekommen ist dann soll er wieder auf 0
   If winkel < 0 Then winkel = 359 ; wenn der winkel bei 0 ist dann soll er wieder auf 359
   
   If ImagesCollide(player(winkel), x, y,frame1,lv1, 0, 0,frame2) Then ; wenn player mit lv1 kollidiert dann wird er wieder zurückgesetzt
         winkel = winkel_vorher
   EndIf
   
   x_vorher = x
   y_vorher = y
   
   If KeyDown(200) Then ; Fortbewegung
      x = x + Cos(winkel) * speed
      y = y + Sin(winkel) * speed
   EndIf
   If KeyDown(208) Then ; Zurückbewegung
      x = x - Cos(winkel) * speed
      y = y - Sin(winkel) * speed
   EndIf
   
   If ImagesCollide(player(winkel), x, y,frame1,lv1, 0, 0,frame2) Then ; wenn player mit lv1 kollidiert dann wird er wieder zurückgesetzt sonst speed 10
         x = x_vorher
      y = y_vorher
   Else
         speed = 10
   EndIf

   DrawImage boden,0,0
   DrawImage lv1,0,0
   DrawImage player(winkel),x,y

   Flip

Einmal wird die Kollision abgefragt nachdem der Winkel verändert wurde und einmal nachdem die Position verändert wurde. Falls es kollidiert werden die Werte wieder zurückgesetzt. Ich hab auch noch einen Rückwärtsgang reingemacht, weil man sonst steckenbleiben könnte. Mit diesen Änderungen funzt das Programm bei mir perfekt. Very Happy
1 ist ungefähr 3

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group