Kollsion im Bild, Spieler soll nicht durch die Wand laufen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

TheMuffi

Betreff: Kollsion im Bild, Spieler soll nicht durch die Wand laufen

BeitragMo, Jun 14, 2010 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo erstmal,

ich als noop hab mal ne frage:

ich hab ein Labyrinth, durch das der spieler ersteinmal durchlaufen soll
wie kann ich denn sagen, dass der spieler, wenn er die wand berührt, nicht hindurch laufen soll, sondern vorher stehenbleiben soll?
geht das vllt auch, ohne, dass ich jetzt jede einzelne wand einzeln abchecken muss?

danke schon mal im voraus

TheMuffi

M0rgenstern

BeitragMo, Jun 14, 2010 18:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, ein paar informationen wären nicht schlecht.

Wie machst du das?
Tilemap?
Dann musst du das in der Map ändern. Vielleicht mit nem zweiten Layer.

Aber sag erstmal wie du das ganze aufgebaut hast.

Lg, M0rgenstern
 

TheMuffi

BeitragMo, Jun 14, 2010 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich ha ersma ganz normal angefangen

BlitzBasic: [AUSKLAPPEN]
lab = LoadImage("labyrint.bmp")
spieler = LoadImage("spieler.bmp")

DrawImage lab,0,0
DrawImage spieler,395,300

;und hier jetzt die if-konstruktion fürs kolliden
;aber da weiß ich ja nicht wie ich die machen soll

Johannes´

BeitragMo, Jun 14, 2010 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest einfach mit Imagescollide abfragen, ob der Spieler mit dem Labyrint kollidiert, wenn ja, dann setzt du ihn auf die letzte Position zurück, auf der er nicht kollidiert hat:

BlitzBasic: [AUSKLAPPEN]
	If ImagesCollide(lab,0,0,0,spieler,x,y,0) Then 
x=lx:y=ly
Else
lx=x:ly=y
EndIf
 

TheMuffi

BeitragMo, Jun 14, 2010 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
mensch, warum ist mir das nicht früher eingefallen?
Rolling Eyes Very Happy
danke

count-doku

BeitragMo, Jun 14, 2010 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Noch ein Tipp, falls
du rechteckige Tiles verwendest.
RectsOverlap hat nicht den Bug auf manchen Grakas wie ImagesCollide.
Bei ImageRectOverlap bin ich grad nicht sicher obs da auch den Bug gibt,
wenn nicht, wäre das noch besser, weils pixelgenau ist.

lg,
count-doku

Eingeproggt

BeitragMo, Jun 14, 2010 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Auch ImageRectOverlap leidet leider unter dem Bug.
Also ich würde ja zu einer so genannten Tilemap raten, aber das kann fürn Anfang etwas zu viel sein (obwohl es alles andere als schwer is - es ist halt viel auf einmal... Ein gutes Tut darüber hilft bestimmt).

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

TheMuffi

BeitragMo, Jun 14, 2010 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
ja, ich weiß nur nicht ganz genau, was eine tilemap bewirkt und wie ichs mache
müsste ich mir so ein tutorial angucken oder so
ich guck mal
danke

M0rgenstern

BeitragMo, Jun 14, 2010 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, da das Bild "labyrinth.bmp" heißt, denke ich, dass das ganze Labyrinth auf diesem Bild zu sehen ist.
Ich gehe also davon aus, dass der Spieler sich in diesem Labyrinth bewegen soll.
Das funktioniert also nicht mit imagescollide oder mit imagesrectcollide, das dass für ein GANZES Bild gilt.
Also würde es dir eine Kollision anzeigen, sobald du das Labyrinthbild berührst. und zwar egal wo.

Eine Tilemap macht folgendes: Dein ganzes Spielfeld wird unterteilt in gleichgroße "Stücke". Diese Stücke haben dann alle bestimmte Informationen (das ganze läuft über ein Array). Durch diese Informationen kannst du auslesen, welches Bild dafür gezeichnet werden soll und ob man damit kollidieren kann oder nicht.

Lg, M0rgenstern
 

timinator

BeitragDi, Jun 15, 2010 14:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Soweit ich weiß klappt das aber auch mit ImagesCollide.

Wenn man am Anfang z.B sagt:

Graphics 800,600,32,1

blendet der automatisch alles schwarze aus dem Bild aus.
ImmagesCollide sagt also nur dann "true" wenn der Spieler im Labyrinth auf etwas nicht schwarzes trifft.

MFG timinator Very Happy
 

TheMuffi

BeitragDi, Jun 15, 2010 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
nur mal nebenbei:
auch wenn graphics diesen nebeneffekt nicht hätte, oder man die funktion für ne andere farbe bräuchte, könnte man ja sowieso den effekt mit maskimage nachstellen
das ist also nicht das problem....

Hubsi

BeitragDi, Jun 15, 2010 22:47
Antworten mit Zitat
Benutzer-Profile anzeigen
timinator hat Folgendes geschrieben:
Soweit ich weiß klappt das aber auch mit ImagesCollide.

Wenn man am Anfang z.B sagt:

Graphics 800,600,32,1

blendet der automatisch alles schwarze aus dem Bild aus.


Du hast die Funktion von Graphics falsch verstanden Wink
ImagesCollide wie auch ImagesRectCollide funktioniert auf manchen Grakas nicht und ist somit unbrauchbar sobald das Programm den eigenen Rechner irgendwann verlassen soll. Eine Tilemap wäre für das Vorhaben imho die beste Wahl. Und der anfängliche Mehraufwand amortisiert sich um ein vielfaches.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

timinator

BeitragMi, Jun 16, 2010 14:34
Antworten mit Zitat
Benutzer-Profile anzeigen
ja hast recht wenn man sein Programm verbreitenn möchte sollte man
nicht unbedingt ImagesCollide nehmen.

Ich meinte nur das das manchmal ganz nützlich sein kann alles schwarze auszublenden.

count-doku

BeitragMi, Jun 16, 2010 14:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Alles Schwarze ausblenden, kann man entweder mit
ClsColor ,0,0,0 oder direkt pro Bild: MaskImage

Graphics blendet nicht alles schwarze aus.
Schwarz ist nur die StandardFarbe von ClsColor...


lg,
count-doku

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group