Code archives/Graphics/Automatic 2D collision response
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
| I thought I'd posted this already, but don't see it anywhere... It only does a sort of circular response to the collision, but should be useful for something! It's also pretty fixed as-is, so just use it as a starting point for your own needs. Replace "big-moo.bmp" with an image of your own... | |||||
; -----------------------------------------------------------------------------
; Automatic collision response in 2D...
; -----------------------------------------------------------------------------
; support@blitzbasic.com
; -----------------------------------------------------------------------------
Graphics 640, 480
AppTitle "Automatic 2D collision response"
SetBuffer BackBuffer ()
ClsColor 64, 128, 180
; -----------------------------------------------------------------------------
; Load images...
; -----------------------------------------------------------------------------
sheep1 = LoadImage ("big-moo.bmp")
MaskImage sheep1, 255, 0, 255
sheep2 = CopyImage (sheep1)
px = 10: py = 10 ; Player x and y positions
; -----------------------------------------------------------------------------
; The variables that get the resulting movement values must be floats!
; -----------------------------------------------------------------------------
cx# = 90: cy# = 90 ; Computer x and y positions
; -----------------------------------------------------------------------------
; The 'mover' variable specifies how much to move in a collision. You could
; make this dynamic within your main loop, of course...
; -----------------------------------------------------------------------------
mover# = 1
Repeat
Cls
If KeyDown (203) px = px - 1
If KeyDown (205) px = px + 1
If KeyDown (200) py = py - 1
If KeyDown (208) py = py + 1
If ImagesCollide (sheep1, px, py, 0, sheep2, cx, cy, 0)
angle# = ATan2 (cy - py, cx - px)
cx = cx + (mover * (Cos (angle)))
cy = cy + (mover * (Sin (angle)))
EndIf
DrawImage sheep1, px, py
DrawImage sheep2, cx, cy
Flip
Until KeyHit (1)
End |
Comments
None.
Code Archives Forum