Kollision suboptimal
Übersicht

![]() |
BigMaexleBetreff: Kollision suboptimal |
![]() Antworten mit Zitat ![]() |
---|---|---|
Moinsen Leutz
Ich tun habe Problem. Mein Kollision hat Fehler. Zugrunde liegt folgender Code Code: [AUSKLAPPEN] Graphics 640,480
SetBuffer BackBuffer () ClsColor 255,255,255 Color 0,0,0 HeldSprung#=0 HeldX#=400 HeldY#=200 Repeat If KeyDown(205) Then HeldX=HeldX+1 If KeyDown(203) Then HeldX=HeldX-1 If KeyHit(57) Then HeldSprung=-15 HeldSprung=HeldSprung+0.4 ;Schwerkraft If HeldX+10>200 And HeldX+10<=205 And HeldY > 300-15 Then HeldX=200-10 ; Linke Wand If HeldX-10<350 And HeldX-10=>345 And HeldY > 300-15 Then HeldX=350+10 ; Rechte Wand If HeldX+10>200 And HeldX-10<350 And HeldY > 300-15 Then HeldY=300-15 : HeldSprung=0 ; ObenBox If HeldY > 450-15 Then HeldY = 450-15 : HeldSprung=0 ; Boden HeldY=HeldY+HeldSprung ; Fallen Rect 0,450,640,30 Rect 200,300,150,150 Line HeldX-10,HeldY-15,HeldX+10,HeldY+15 Line HeldX-10,HeldY+15,HeldX+10,HeldY-15 Flip Cls Until KeyHit(1) Problem: Wenn man ganz links o. rechts auf den Block springt,( Also sodass man gnaz knapp auf der Kante steht) greift zuerst die Wandkollision. Das will ich nicht. Die Kollisionen vertauschen verschiebt nur das Problem. Also wie löse ich das Problem und habe eine saubere Kollisionsabfrage? |
||
--------------------------------------
Ich bin unfreiwillig ein Mitglied dieser kapitalistischen Gesellschaft, wo jeder Geldgeile Unternehmer an mein Geld will und ich selbst bei meinen Entscheidungen so gut wie willenlos bin...... und ich bin glücklich drüber |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
habs jetzt nur überflogen, aber du scheinst horizontale und vertikale kollisionen irgendwie miteinander zu verfrickeln.
Also ich würde das so lösen (mal ein Beispiel-Pseudo-Code) Code: [AUSKLAPPEN] neux = x + bewegungX neuy = y + bewegungY ok=1 if neuX >maximalX ok = 0 if neuX < minimalX ok = 0 if neuY > maxiamY ok = 0 if neuY < minimalY ok = 0 if(ok) x = neux y = neuy end if wie schon gesagt, das kam grad aus meinem kopf. Versuch das mal irgendwie für deinen Code umzusetzen/anzupassen cu, Smily0412 |
||
![]() |
BigMaexle |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit AltX/Y zund NeuX/Y arbeiten....
Gute Idee. Aber neuer Bug ![]() Ich fall mit 10 Pixel auf den Block. bin jetz zu 5 Pixeln drin. Meine Kollision greift und ich werde die 10 Pixel zurückgesetzt. Jetz stehe ich wieder in der Luft, blöde... Auch muss ich ja irgendiwe unterscheiden, ob man an die Wand stößt oder oben drauf landet. Da hab ich grad ne Denkblockade. |
||
--------------------------------------
Ich bin unfreiwillig ein Mitglied dieser kapitalistischen Gesellschaft, wo jeder Geldgeile Unternehmer an mein Geld will und ich selbst bei meinen Entscheidungen so gut wie willenlos bin...... und ich bin glücklich drüber |
Gast |
![]() Antworten mit Zitat |
|
---|---|---|
Versetz den Player immer 1 Pixel nach inten, bis Kollison = 0 | ||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oder rechne den MOD-Wert von Tile-Position/Player-Position zur Player-Position. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group