Objekte (z.B eine Person) auf Knopfdruck drehen
Übersicht

![]() |
BigMaexle |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstmal Schnäggli92:
Du schreist hier du wärst der noobigste noob den die noob-Welt je genoobt hat. Das nervt ![]() 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 ![]() |
||
![]() |
Schnäggli92 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok danke aber warum gibt es manchmal mit dem code eine runtime error : Illegal memory address?? | ||
![]() |
das wurgel |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() |
||
1 ist ungefähr 3 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group