Hi guys. i have a problem in my sprite collision. it is working but even my character is not stepping on it. my character is still floating .. can someone help about this pls. this is my code..
gosub Vars
gosub loadimages
Sync on : Sync rate 30
Load image "wow.bmp", bgID
for i = 1 To 6
load image "pic\floor.bmp", platformID(i)
next i
BGx=0
BGy=0
do
anim = 0
paste image bgID,BGx,BGy
set cursor 0,0
print "Background Xpos";BGx;""
for i = 1 to 6
sprite platformID(i), platform1_x(i), platform1_y(i), platformID(i)
next i
gosub collision
gosub playerSprites
gosub playerMovement
gosub playerAnim
gosub playerBoundryChk
gosub gravity
Sync
Loop
Vars:
playerID = 1
x# = 0
y# = 395
Anim = 0
fRight = 1
Frame = 0
imgNum = 1
bgID = 100
gravity# = 3
jumping = 0
jumpspeed = 3
falling = 0
dim platformID(6)
dim platform1_x(6)
dim platform1_y(6)
for i = 1 to 6
platformID(i) = 100 + i
platform1_x(1) = 424
platform1_y(1) = 450
platform1_x(2) = 242
platform1_y(2) = 450
platform1_x(3) = 0
platform1_y(3) = 450
platform1_x(4) = 300
platform1_y(4) = 330
platform1_x(5) = 550
platform1_y(5) = 250
platform1_x(6) = 700
platform1_y(6) = 170
next i
Return
loadimages:
load image "pic\walking.bmp", 1
load image "pic\walk1.bmp", 2
load image "pic\walk2.bmp", 3
load image "pic\walk3.bmp", 4
load image "pic\falling.bmp", 5
load image "pic\jump.bmp", 6
return
playerSprites:
if jumping = 0
old_y = y#
endif
sprite playerID, x#, y#, imgNum
jumpmax = old_y - 150
Return
gravity:
if falling = 1
y# = y# + gravity#
imgNum = 5
endif
if jumping = 1
imgNum = 6
y# = y# - (jumpspeed*4)
endif
if y# <= jumpmax
falling = 1
jumping = 3
endif
Return
collision:
if sprite exist (playerID)
if sprite collision (playerID, platformID(1)) = 1
falling = 0
jumping = 0
y# = y#
endif
endif
if sprite exist (playerID)
if sprite collision (playerID, platformID(6)) = 1
falling = 0
jumping = 0
y# = y#
endif
endif
if sprite exist (playerID)
if sprite collision (playerID, platformID(5)) = 1
falling = 0
jumping = 0
y# = y#
endif
endif
if sprite exist (playerID)
if sprite collision (playerID, platformID(4)) = 1
falling = 0
jumping = 0
y# = y#
endif
endif
if sprite exist (playerID)
if sprite collision (playerID, platformID(3)) = 1
falling = 0
jumping = 0
y# = y#
endif
endif
if sprite exist (playerID)
if sprite collision (playerID, platformID(2)) = 1
falling = 0
jumping = 0
y# = y#
endif
endif
if sprite exist (playerID)
if falling = 0 and sprite collision (playerID, 0) = 0
falling = 1
endif
endif
Return
playerMovement:
Rem walk Right
if rightkey()=1
if controlkey()=1
Rem running right
x# = x# + 5
Endif
x#=x# + 3
if fRight = 0
Mirror Sprite 1
fRight = 1
Endif
Anim=1
Endif
Rem walking left
if leftkey()=1
if controlkey()=1
x# = x# -5
Endif
x#=x# - 3
if fRight = 1
Mirror Sprite 1
fRight = 0
Endif
Anim=1
Endif
Rem Crouching
if downkey()=1
Anim=2
Endif
Rem Jumping
if upkey()=1 and jumping = 0 and falling = 0
jumping = 1
Anim=3
Endif
Return
playerAnim:
if Anim=1
imgNum=2 + (Frame/2)
Frame=Frame + 1
IF frame>4 THEN Frame = 0
ELSE imgNum=1
ENDIF
rem for CROUCHING
if Anim=2
imgNum=5
endif
rem for JUMPING
if Anim=3
imgNum=6
endif
return
playerBoundryChk:
if x#<0
x#=0
endif
if x# > screen width()/2-sprite height(1)
x# = screen width()/2 - sprite width(1)
dec BGx
dec platform1_x(4)
dec platform1_x(5)
dec platform1_x(6)
endif
if BGx
x# = screen width()/2-sprite height(1)
if leftkey()=1
inc BGx
inc platform1_x(4)
inc platform1_x(5)
inc platform1_x(6)
endif
endif
Return
i have a problem in darkbasic codes. pls help me