Objekt kollision die 1000000ste

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

mas93

Betreff: Objekt kollision die 1000000ste

BeitragMo, Dez 18, 2006 18:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Sry,aber ich progg gerade eine art RPG und will wissen wie ich eine Kollision zwischen player und einem Bild mache,also das der player dann vor dem Bild stehnbleibt,z.b:

Code: [AUSKLAPPEN]

If images collide(player,x,y,0,objekt,234,611,0)then bleibt player vor objekt stehen.


genau das hab oich noch nie kapiert wie ich das machen soll.
Und wie mach ich das am besten mit er kollision.
muss ich die kollision dann mit jedem Bild einzeln machen???
Das wären dann ja 60prozent des codes wenn ich das für jedes bild berechnen würde...

Wie macht ihr das????


mfg marius
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

StepTiger

BeitragMo, Dez 18, 2006 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
also, am Besten, du speicherst immer vorher Oldx und oldy, sollte die neue koordinate kollidieren, gehst du zurück auf oldx
dann am besten noch schaun, ob er sich wenigstens in eine Richtung bewegen kann
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Dez 18, 2006 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn sich die Objekte in einem 2D-Map-Array befinden, so muß nicht jedes einzelne auf kollision geprüft werden. Es reicht nur die vier oder neun mögliche zu prüfen, in welchen sich der spieler zu einer Zeit befinden kann.

mas93

BeitragMo, Dez 18, 2006 18:36
Antworten mit Zitat
Benutzer-Profile anzeigen
k Wie speichere ich die alte possition????
wenn ich alteposx=x mache ist des ja immer die gleiche
wie mache ich das wenn es kollidiert das es dann nichmehr die eigene is???
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Dez 18, 2006 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
altx=x

If keyDown(123) Then x=x+1

If Imagescollide(1,2,3,4,5...) Then x=altx

DrawImage Bild,x,...


edit1 Nach einer Kollisions wird die Spielfigur zurück zur Position versetzt, wo es noch keine Kollision hatte. Dadurch kann es nicht durch Objekte laufen...
  • Zuletzt bearbeitet von hectic am Mo, Dez 18, 2006 18:40, insgesamt 2-mal bearbeitet

StepTiger

BeitragMo, Dez 18, 2006 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
oldx=x
oldy=y
x=x+xmove
y=y+ymove
kolcheck()




so! Wink
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

DerHase

BeitragMo, Dez 18, 2006 22:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Dadurch kann es aber passieren, das eine Lücke zwischen Wand und Figur entsteht. Bei rechteckigen Hindernissen, kann man das leicht lösen, man setzt die Figur einfach an den Rand des Rechteckes, da man seine Größe und Position kennt, ohne die könnte man ja gar nicht die Kollision prüfen. Bei unförmigen Objekten muss man die Figur solange in die Richtung der alten Position schieben, bis keine Kollision mehr statt findet. Ich hab dies >>>HIER<<< mal vorbereitet.
Play Satyr!

mas93

BeitragFr, Dez 22, 2006 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab jetzt ne ganz andere viel einfachere methode genommen:

Code: [AUSKLAPPEN]

;---------------------------------------------------------------------------------------
;--------------------------------------kollisionen--------------------------------------
;---------------------------------------------------------------------------------------


;-------------------------------------------------------------------------------------
;-----------------------------waffenbudeaussen/kollisionen----------------------------
;-------------------------------------------------------------------------------------

;gilt für alle anims auf einmal^^

;oben
If KeyDown(200) Then
    richtung=3 : y#=y#-0.50
If ImagesCollide(linksanim,x,y,spieler_frames,waffenbudeaussen,0,0,0) Then y=y+1
   EndIf

;unten
If KeyDown(208) Then
    richtung=4 : y#=y#+0.50
If ImagesCollide(linksanim,x,y,spieler_frames,waffenbudeaussen,0,0,0) Then y=y-1
     EndIf


;links
If KeyDown(203) Then
    richtung=1 : x#=x#-0.50
If ImagesCollide(linksanim,x,y,spieler_frames,waffenbudeaussen,0,0,0) Then x=x+1
EndIf

;rechts
If KeyDown(205) Then
    richtung=2 : x#=x#+0.50
If ImagesCollide(linksanim,x,y,spieler_frames,waffenbudeaussen,0,0,0) Then x=x-1
EndIf


;----------------------------------------------------------------------------------------
;---------------------------!ENDE!-waffenbudenkollisionen-!ENDE!-------------------------
;----------------------------------------------------------------------------------------



soweit funktioniert alles.

wenn ich aber darunter einfach ohne einen einzigen befehl das schreibe dann...

Code: [AUSKLAPPEN]

;--------------------------------------Wanduntenkollision--------------------------------
;----------------------------------------------------------------------------------------


;oben
If KeyDown(200) Then
    richtung=3 : y#=y#-0.50
If ImagesCollide(linksanim,x,y,spieler_frames,wandunten,0,238,0) Then y=y+1
   EndIf

;unten
If KeyDown(208) Then
    richtung=4 : y#=y#+0.50
If ImagesCollide(linksanim,x,y,spieler_frames,wandunten,0,238,0) Then y=y-1
     EndIf


;links
If KeyDown(203) Then
    richtung=1 : x#=x#-0.50
If ImagesCollide(linksanim,x,y,spieler_frames,wandunten,0,238,0) Then x=x+1
EndIf

;rechts
If KeyDown(205) Then
    richtung=2 : x#=x#+0.50
If ImagesCollide(linksanim,x,y,spieler_frames,wandunten,0,238,0) Then x=x-1
EndIf


;----------------------------------------------------------------------------------------
;-----------------------------!ENDE!-wanduntenkollision-!ENDE!---------------------------
;----------------------------------------------------------------------------------------


geht keine kollision von beiden mehr,der spieler bewegt sich nur noch langsamer über das bild mit dem er kollidioert.
Wisst ihr warum???


mfg marius
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group