Ich programmiere derzeit einen kleinen 2D Shooter. Doch in der kollisionsabfrage sind noch einige Bugs.
Wenn sich die Spielfigur an einer steigung befindet, die höher als 3 pixel ist, lässt sie sich in die andere Richtung nicht mehr bewegen.
Hier mal der Code:
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen(800, 600, 32, "soldiers reloaded")
LoadSprite(0, "Maps\test\front.bmp", 0)
LoadSprite(1, "Maps\test\back.bmp", 0)
LoadSprite(2, "Maps\test\col.bmp", 0)
LoadSprite(3, "GFX\worm0.bmp", 0)
LoadSprite(4, "GFX\worm1.bmp", 0)
LoadSprite(5, "GFX\worm0r.bmp", 0)
LoadSprite(6, "GFX\worm1r.bmp", 0)
s.l
s = 3
x.l
y.l
r.l
x = 50
y = 50
Repeat
ExamineKeyboard()
;Fall Routine
DisplayTransparentSprite(3, x, y)
If SpritePixelCollision(2, 0,0, 3, x, y-1)
Else
y = y + 1
EndIf
;Rechts------------------------
If KeyboardPushed(#PB_Key_Right)
s = 5
If SpritePixelCollision(2, 0, 0, s, x+1, y)
If SpritePixelCollision(2, 0, 0, s, x+1, y-1)
If SpritePixelCollision(2, 0, 0, s, x+1, y-2)
If SpritePixelCollision(2, 0,0 , s, x+1 , y-3)
Else
x = x + 1
y = y - 3
EndIf
Else
x = x + 1
y = y - 2
EndIf
Else
x = x + 1
y = y - 1
EndIf
Else
x = x + 1
EndIf
EndIf
;------------------------------
;Links-------------------------
If KeyboardPushed(#PB_Key_Left)
s = 3
If SpritePixelCollision(2, 0, 0, s, x-1, y)
If SpritePixelCollision(2, 0, 0, s, x-1, y-1)
If SpritePixelCollision(2, 0, 0, s, x-1, y-2)
If SpritePixelCollision(2, 0,0 , s, x-1 , y-3)
Else
x = x - 1
y = y - 3
EndIf
Else
x = x - 1
y = y - 2
EndIf
Else
x = x - 1
y = y - 1
EndIf
Else
x = x - 1
EndIf
EndIf
;------------------------------
;Jetpack-----------------------
If KeyboardPushed(#PB_Key_Up)
If SpritePixelCollision(2, 0, 0, s, x, y-3)
Else
y = y - 2
EndIf
EndIf
DisplayTransparentSprite(2, 0, 0)
DisplaySprite(1, 0, 0)
DisplayTransparentSprite(s, x, y)
DisplayTransparentSprite(0, 0, 0)
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)