Eigenständige Objektbewegung + Richtungswechsel
Übersicht

AracosBetreff: Eigenständige Objektbewegung + Richtungswechsel |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo!
Habe folgendes Problem: Ich versuche eine Kiste dazu zu bringen sich eigenständig zu bewegen (is ja kein ding... y= y-1 bzw. y=y+1 damit sie sich nachoben oder nach unten bewegt) diese kiste soll dann jedoch sobald sie ein bestimmtes objekt berührt nicht mehr von oben nach unten sondern dann nach rechts weiter bewegen. Habs mit Imagecollide versucht... klappt auch, leider nur für die länge des objektes danach bewegt die kiste sich wieder nach unten... Code: [AUSKLAPPEN] Graphics 800,600,32,2 SetBuffer BackBuffer() y = 250 x = 300 y1= 400 x1= 285 y2= 400 x2= 335 y3= 400 x3= 385 y4= 400 x4= 435 Cls ClsColor 255,0,0 ;Pic Loading; Con1 = LoadImage ("Con1.jpg") Con2 = LoadImage ("Con1.jpg") Con3 = LoadImage ("Con1.jpg") Con4 = LoadImage ("Con1.jpg") Con5 = LoadImage ("Con1.jpg") Kiste1 = LoadImage ("kiste.jpg") ;Schleifenbeginn Repeat Cls DrawImage Con1,x1,y1 DrawImage Con2,x2,y2 DrawImage Con3,x3,y3 DrawImage Con4,x4,y4 DrawImage Con5,x5,y5 DrawImage Kiste1,x,y ; Eigenbewegung der Kiste y= y-3 ; Kollisionsabfrage If ImagesCollide (Kiste1, x, y-25, frame1, Con1, x1, y1, frame2) Then x=x+1 Else y= y+1 If ImagesCollide (Kiste1, x, y-25, frame1, Con2, x2, y2, frame2) Then x=x+1 Else y= y+1 If ImagesCollide (Kiste1, x, y-25, frame1, Con3, x3, y3, frame2) Then x=x+1 Else y= y+1 If ImagesCollide (Kiste1, x, y-25, frame1, Con4, x4, y4, frame2) Then x=x+1 Else y= y+1 If ImagesCollide (Kiste1, x, y-25, frame1, Con5, x5, y5, frame2) Then x=x+1 EndIf EndIf EndIf EndIf EndIf ;SEITENBEGRENZUNG; If y<0 Then y=0 EndIf If y>545 Then y=545 EndIf If x>765 Then x=765 EndIf If x<0 Then x=0 EndIf ;SEITENBEGRENZUNG KISTE1; If y<0 Then y=0 EndIf If y>580 Then y=580 EndIf If x>775 Then x=775 EndIf If x<0 Then x=0 EndIf Flip Until KeyDown(1) End könnte den ganzen code bestimmt auch mit dims darstellen...aber soweit bin ich noch ned^^ gruß Aracos |
||
Carpe Diem |
![]() |
Caesium |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn ich dich richtig verstehe: du könntest das ganze beispielsweise mit variablen für jede richtung verwirklichen. sobald die kiste mit dem objekt kollidiert, änderst du die richtung. die bewegung machst du von der richtungsvariable abhängig.
Code: [AUSKLAPPEN] Const OBEN = 1
Const UNTEN = 2 Const LINKS = 3 Const RECHTS = 4 Global kiste_richtung = UNTEN Select kiste_richtung Case OBEN y = y - 1 Case UNTEN y = y + 1 ;und so weiter ... End Select gruß, caesium |
||
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann. Das Gegenteil ist da schon schwieriger. ![]() |
- Zuletzt bearbeitet von Caesium am Mo, Mai 26, 2008 18:41, insgesamt einmal bearbeitet
kevin89Betreff: --- |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du musst das ganze in die If-Anweisung bringen. Das würde dann ungefähr so aussehen:
If ImagesCollide (Kiste1, x, y-25, frame1, Con1, x1, y1, frame2) Then x=x+1 Else y= y+1 ElseIf ImagesCollide (Kiste1, x, y-25, frame1, Con2, x2, y2, frame2) Then x=x+1 Else y= y+1 ElseIf ImagesCollide (Kiste1, x, y-25, frame1, Con3, x3, y3, frame2) Then x=x+1 Else y= y+1 ElseIf ImagesCollide (Kiste1, x, y-25, frame1, Con4, x4, y4, frame2) Then x=x+1 Else y= y+1 ElseIf ImagesCollide (Kiste1, x, y-25, frame1, Con5, x5, y5, frame2) Then x=x+1 Else [HIER KOMMT DIE EIGENTLICHE BEWEGUNG HIN] Ansonsten empfehle ich dir statt ImagesCollide (Pixelgenaue Kollision) ImagesOverlap(Kollision durch überlappen). mfg kevin89 |
||
kevin89 ![]() |
![]() |
garret |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei Kisten würde ich dann sogar RectsOverlap![]() @ Aracos: Wenn du mehr als fünf Kisten einbauen willst, machst du es dir mit deinem jetzigen Code sehr umständlich, da du für jeden Container eigene selbstständige Variablen wie x1, x2 etc. erstellst. Dim ![]() ![]() ![]() Wenn du ein Bild mehrfach lädst, kannst du übrigens auch CopyImage ![]() MfG garret |
||
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group