Kollisions Prob. :(
Übersicht

ProtoBetreff: Kollisions Prob. :( |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo Leute, Ich arbeite an einem 2d Wrestling Spiel, nun hab ich ein Problem mit der Kollision. Meine zwei Spieler müssen sich von allen Seiten "fühlen" können z.B.
als ob sie gegen eine Wand laufen. Ich habe daran gedacht ImagesCollide zu benutzen,hab einiges darüber gelesen und glücklicherweise verstanden. ....Jedoch nur den "Kontakt" : Code: [AUSKLAPPEN] If ImagesCollide(Wrestler1,X,Y,0,Wrestler2,A,B,0) Then
Color 255,255,255 Text 30,30, "Kontakt" Delay 1000 EndIf Ich hoffe jemand wäre bereit mir zu helfen,habe den Code extra leicht gemacht ![]() Code: [AUSKLAPPEN] ;Koordinaten Wrestler1 X = 150 Y = 100 ;Koordinaten Wrestler2 A = 80 B = 60 ; ; Hauptschleife ; Repeat Cls ;Zeichnen von Grafiken DrawImage Ring,0,0 DrawImage Wrestler1, X,Y DrawImage Wrestler2, A,B ;---------------------------------------------------------- ; Hier ist das Problem If ImagesCollide(Wrestler1,X,Y,0,Wrestler2,A,B,0) Then X = ? And Y = ? A = ? And B = ? EndIf ;----------------------------------------------------------- ; Steuerung Wrestler1 If KeyDown(200) = 1 Then Y = Y - 1 If KeyDown(208) = 1 Then Y = Y + 1 If KeyDown(205) = 1 Then X = X + 2 If KeyDown(203) = 1 Then X = X - 2 ; Steuerung für Wrestler2 If KeyDown(72) = 1 Then B = B - 1 If KeyDown(76) = 1 Then B = B + 1 If KeyDown(77) = 1 Then A = A + 2 If KeyDown(75) = 1 Then A = A - 2 ; Rand-Überschreitung Wrestler1 If X < 230 Then X = 230 If X > 540 Then X = 540 If Y < 180 Then Y = 180 If Y > 330 Then Y = 330 ; Rand-Überschreitung Wrestler2 If A < 230 Then A = 230 If A > 540 Then A = 540 If B < 180 Then B = 180 If B > 330 Then B = 330 Flip Until KeyDown(1) |
||
![]() |
faggie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo, Proto!
Also ich würde das so machen: Wenn die Spieler gegen irgendetwas kollidieren, setzt du in der IF-Abfrage der Kollision, eine Variable (z.B. kollidiert=1). Wenn jetzt der Spieler "links" drückt, muss du noch überprüfen, ob kollidiert=0 ist. Code: [AUSKLAPPEN] repeat
kollidiert=0 if <deine kollisionsabfrage>=1 then kollidiert=1 if keydown(links)=1 and kollidiert=0 then x+x-1 until keyhit(1) Gruß, faggie |
||
Proto |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmm... habe versucht den Verlauf zu verstehen und es in meinen Code zu kombinieren,leider ging es nicht.
Könntest du mir sagen wo hier der Fehler liegt? Code: [AUSKLAPPEN] Repeat kollidiert=0 If ImagesCollide(Wrestler1,X,Y,0,Wrestler2,A,B,0) Then kollidiert=1 Endif If KeyDown(203)= 1 And kollidiert=0 Then X + X - 1 Until KeyHit(1) |
||
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
Proto hat Folgendes geschrieben: Hmm... habe versucht den Verlauf zu verstehen und es in meinen Code zu kombinieren,leider ging es nicht.
Könntest du mir sagen wo hier der Fehler liegt? Code: [AUSKLAPPEN] Then X + X - 1 guck mal genau hin ![]() l8er, psy |
||
Proto |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
...und was muss da stattdessen kommen? ![]() |
||
jones |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wie wärs mit x=x+1 ?![]() gruß jones |
||
Proto |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Funktioniert auch nicht, der Spieler1 geht an Spieler2 vorbei.
Oder hab ich was falsch gemacht? Code: [AUSKLAPPEN] ;Kollision kollidiert=0 If ImagesCollide(Wrestler1,X,Y,0,Wrestler2,A,B,0) Then kollidiert=1 EndIf If KeyDown(203)= 1 And kollidiert=0 Then X = X + 1 EndIf |
||
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kuck mal hier! Vielleicht bringt Dich das ja weiter ![]() |
||
Proto |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich blicke bei diesen Kollisionen nichts durch, schade ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group