Seite 1 von 1

Wände nicht überfahrbar?? wie z.B. bei Pacman

Verfasst: 25.08.2005 17:01
von seggl
wie kann ich es anstellen, dass die wände z.b. bei einem labyrinth nicht "überfahrbar" sind sprich, dass man nicht einfach durch die wand hindurch fahren kann??

Verfasst: 25.08.2005 17:08
von DarkDragon
Dies ist eine automatische Nachricht des Forenbots:

Bitte benutzen sie die Forensuche. :freak:



Zum Thema Kollision wurde schon reichlich gepostet.

Verfasst: 25.08.2005 17:11
von Ynnus
Postition der Wände mit der der Spielfigur vergleichen, bei Kollision die Spielfigur anhalten, fertig.
Eine ausführlichere Antwort kannst du mit so wenigen Infos, was genau das für ein Spiel ist usw. hier nicht erwarten. Eigentlich müsstest du wohl selbst darauf kommen können, logisch nachgedacht, zumindest.
Denn im Grunde genommen ist es tatsächlich so, dass man Position der Mauer und Position des Spielers vergleichen muss. Dann gibt es gewisse Bereiche (z.B. Wände) die der Spieler nicht einnehmen darf. Befindet er sich in diesem Bereich, wird er zurückgesetzt bis er draußen ist. Das sorgt dafür, dass der Spieler nicht durch Wände geht.

Verfasst: 25.08.2005 17:12
von Green Snake
schau dir am besten in der hilfe die themen zu spritecollision und spritepixelcollision an ;)

damit wird das berechnet, wenn 2 sprites bzw bilder sich überlappen ;)

kannst aber auch alles mit if abfragen machen :lol:

Verfasst: 25.08.2005 19:41
von Lukas-P
kannst aber auch alles mit if abfragen machen Laughing

Code: Alles auswählen

if spritepixelcollision(...
hää.. muss ich den "Witz" verstehen? :?

Verfasst: 25.08.2005 19:47
von Green Snake
nene, mit if meinte ich etwa folgendes:

Code: Alles auswählen

if Playerx < 500 and playery > 200 or playerx < 20 and BLABLABLA
ich meinte damit, das man JEDE mauer position abfragen müsste, die ein spieler blocken kann.

so hab ichs mal mit vb gemacht, man kann sich ja vorstellen, das man da "relativ" viel zeit braucht :allright:

Verfasst: 26.08.2005 17:31
von unix
Am besten du erstellst ein Raster z.B. 5x5 und Gibst jeden Rasterfelt einen 'Layer'.
und dan fragst du ab ob der Layer wohin du wilst 0 ist wen nicht dann soll er stehenbleiben.

Code: Alles auswählen

Dim Feld(5,5) ;x, y

Restore Layers

for y = 1 to 5
 for x = 1 to 5
  Layer = read
  Feld(x,y) = Layer
 next
next

repeat

 if keyboarrdpush.... ; alle 4 Richtungen

if Feld(PlayerX-1,PlayerY) and Richtung = "Links"
 Player-X Bewegung = 0
...

und so weiter

datasection

Layers:

Data.l  0, 0, 0, 0, 0
Data.l  0, 1, 1, 1, 0
Data.l  0, 1, 0, 0, 0
Data.l  0, 1, 0, 1, 1
Data.l  0, 1, 0, 0, 0

enddatasection

Ich hoffe deine Fragen sind damit geklärt