Hi.
I make a character that can move up ladder. but there is a little Problem, that when character move up ladder after Reach to top ladder if try move up more, character jump at top ladder.
here is my code:
rem Landscape App
SetDisplayAspect( -1 )
AddVirtualJoystick(1,6,91,12)
rem Create Sprite
spr = createSprite(0)
setSpriteSize(spr,4,8)
setSpriteOffset(spr,2,4)
setSpritePositionByOffset(spr,50,50)
setSpritePhysicsOn(spr,2)
setSpritePhysicsCanRotate(spr,0)
SetSpriteDepth (spr, 0)
boxman = spr
// Load ground Texture
img = LoadImage ("Texture.png")
ground = CreateSprite(img)
setSpriteAnimation(ground,128,128,2)
SetSpriteVisible(ground,0)
imgladder = LoadImage ("ladder.png")
ladder = CreateSprite (imgladder)
SetSpriteSize (ladder, 7, -1)
SetSpriteOffset (ladder, 3.5, GetSpriteHeight(ladder)/2)
SetSpritePositionByOffset (ladder,50,72.5)
setspritephysicson(ladder,1)
SetSpritePhysicsIsSensor( ladder, 1 )
SetphysicsGravity (0,100)
do
// Create Floor Sprite
cspr = 100
for n = 0 to 10
if getspriteexists(cspr)=0 then clonesprite(cspr,ground)
setspritephysicson(cspr,1)
setspriteframe(cspr,2)
setspritevisible(cspr,1)
spr_w# = (100 / 11.0)
SetSpritePosition (cspr, n*spr_w#, 9.5*spr_w#)
SetSpriteSize (cspr, spr_w#,-1)
inc cspr
next n
// Move the Player to left and right
SetSpritePhysicsVelocity (boxman, GetVirtualJoystickX(1)*20, GetSpritePhysicsVelocityY(boxman))
if getSpritePhysicsVelocityY(boxman) = 0 Then Press = 0
// Check Player Collide with ladder
collide = GetPhysicsCollision (ladder, spr)
if (collide) = 1 then Print ("Collide")
// Climb UP ladder
if collide = 1
if (GetVirtualJoystickY (1))
SetSpritePhysicsVelocity (spr, GetSpritePhysicsVelocityX (spr), GetVirtualJoystickY(1) * 15)
SetPhysicsGravity (0,0)
// Climp Down ladder
else
if (GetVirtualJoystickY (1) > 0 and GetSpriteY(spr) < 78 )
SetSpritePhysicsVelocity (spr, GetSpritePhysicsVelocityX(spr), GetVirtualJoystickY (1) * 15)
SetPhysicsGravity (0,0)
else
SetSpritePhysicsVelocity(spr, getSpritePhysicsVelocityX(spr), 0)
endif
endif
endif
if collide = 0
SetPhysicsGravity (0,100)
else
SetPhysicsGravity (0,0)
endif
Print ("Joystick X: " + str(GetVirtualJoystickX(1)))
Print ("Joystick Y: " + str(GetVirtualJoystickY(1)))
Print ("" + str (GetspriteY(spr)))
Sync()
loop