Kollision auf einer Scrollmap

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

jhabekost

Betreff: Kollision auf einer Scrollmap

BeitragFr, Okt 06, 2006 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, falls sich irgendwer noch an mich erinnert, das ist mein erster Post seit langem... Hatte ne Pause eingelegt wegen fehlenden Mathekentnissen, welche mir die Schule zwar immer noch nicht beigebracht hat, aber ich mir selber... Egal

Also und jetzt hab ich n neues Projekt und da habbich ein Problem: Kollision
Also ich habe eine Figur, welche ich über einen Winkel, cos und sin, steuere (alles Vogelperspektive).
Als das Problem Kollision aufgetreten ist, hab ich mir folgendes gedacht: Ich erstelle eine Kollisionsmap neben der normalen map und ermittle ob oben, unten, links oder rechts eine Kollision zur Figur stattfindet. Dazu habe ich die Variablen

Global colXoben
Global colXunten
Global colYlinks
Global colYrechts

definiert. Standartmäßig sind alle variablen FALSE, dann soll sich der Spieler frei bewegen können. Bei den bewegungen habe ich dann folgendes gemacht:

BlitzBasic: [AUSKLAPPEN]

If KeyDown(200) Then

If Not ((Cos(char_winkel) < 1.0 And colXoben = 1) Or (Cos(char_winkel) > 1.0 And colXunten = 1)) Then
player_posX = player_posX + Cos(char_winkel) * blaster.waffen\player_speed
EndIf

If Not ((Sin(char_winkel) < 1.0 And colYlinks = 1) Or (Sin(char_winkel) > 1.0 And colYrechts = 1)) Then
player_posY = player_posY + Sin(char_winkel) * blaster.waffen\player_speed
EndIf

EndIf


Ergebnis: wenn alle Kollisionen aus sind, passiert das, was passieren soll ansonsten passieren erstaunliche Sachen, die ich nicht erklären kann... (Mal Kollision da, mal Kollision hier...)
Also es geht mir nicht um das Harausfinden der Kolision, sondern um das auswerten...
Was habe ich falsch gemacht? Denkfehler? Tippfehler? Logische Operatoren falsch benutzt?

jhabekost

Betreff: Re: Kollision auf einer Scrollmap

BeitragFr, Okt 06, 2006 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay ich bin selbst drauf gekommen, warn einfach ne menge Denkfehler drinne...

BlitzBasic: [AUSKLAPPEN]

Global colXlinks = 0
Global colXrechts = 0
Global colYoben = 0
Global colYunten = 0

If KeyDown(200) Then

If Not ((Cos(char_winkel) < 0.0 And colXlinks = 1) Or (Cos(char_winkel) > 0.0 And colXrechts = 1)) Then
player_posX = player_posX + Cos(char_winkel) * blaster.waffen\player_speed
EndIf

If Not ((Sin(char_winkel) < 0.0 And colYoben = 1) Or (Sin(char_winkel) > 0.0 And colYunten = 1)) Then
player_posY = player_posY + Sin(char_winkel) * blaster.waffen\player_speed
EndIf

EndIf

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group