Kollisions Prob. :(

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Proto

Betreff: Kollisions Prob. :(

BeitragSo, Jun 25, 2006 22:57
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Smile

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

BeitragSo, Jun 25, 2006 23:07
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Jun 25, 2006 23:25
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Jun 26, 2006 0:04
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink

l8er,
psy
 

Proto

BeitragMo, Jun 26, 2006 10:33
Antworten mit Zitat
Benutzer-Profile anzeigen
...und was muss da stattdessen kommen? Embarassed
 

jones

BeitragMo, Jun 26, 2006 12:03
Antworten mit Zitat
Benutzer-Profile anzeigen
wie wärs mit x=x+1 ?Smile

gruß jones
 

Proto

BeitragMo, Jun 26, 2006 13:07
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Jun 26, 2006 22:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Kuck mal hier! Vielleicht bringt Dich das ja weiter Smile
 

Proto

BeitragMi, Jun 28, 2006 22:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich blicke bei diesen Kollisionen nichts durch, schade Confused

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group