Post by dabyx on Aug 28, 2023 12:37:11 GMT
Hi guys,
I need a bit of help again.
I have created a simple pushable sprite. Where it stops when hitting a wallblock.
The player should change image and animate when colliding and stop moving when the box also cannot move.
Everything works perfectly fine unless the player('s Y coord?) goes lower than the box and then back.
This makes the player NOT animate/change image and they pass through the box if against a wall.
However, the player will still push the box if able.
Also if the player('s Y coord?) goes higher than the box this does not produce the same bug.
I have attempted stripping code, rearranging and creating brand new, simpler scripts to test but always end up with the same result.
Could anyone shed some light on why this could be? I am stumped!
Thanks
Example Code for box pushing right
IF COLLISION 0
IF K > SETTINGA ;or if K = Y tried both - K = players Y coord
IF J < X ; if PLAYERS X coord is to the LEFT
IF KEY RIGHT
OTHER
LET IMAGE = 4 ;change to player push sprite
ANIMATE
ENDSPRITE
IF CANGORIGHT
SPRITERIGHT
ELSE
OTHER
LET IMAGE = 4
ANIMATE
UNDOSPRITEMOVE ;stop moving
ENDSPRITE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
Example Code for Player
EVENT SPRITETYPE6
LET J = X
LET K = Y
IF KEY LEFT
LET DIRECTION = LEFT
LET IMAGE = 3
IF X <= LEFTEDGE
SCREENLEFT
LET X = RIGHTEDGE
EXIT
ELSE
IF CANGOLEFT
SPRITELEFT
ANIMATE
ENDIF
ENDIF
ENDIF
IF KEY RIGHT
LET DIRECTION = RIGHT
LET IMAGE = 2
IF X >= RIGHTEDGE
SCREENRIGHT
LET X = LEFTEDGE
EXIT
ELSE
IF CANGORIGHT
SPRITERIGHT
ANIMATE
ENDIF
ENDIF
ENDIF
IF KEY UP
IF LADDERABOVE
IF CANGOUP
LET IMAGE = 11
SPRITEUP
IF Q = 0
BEEP 35
ENDIF
LET DIRECTION = UP
ANIMATE MEDIUM
ENDIF
;ELSE ;I have tried cutting this block out in case it was an issue but does it either way...
; SPRITELEFT
; IF LADDERABOVE
;ELSE
; SPRITERIGHT
; SPRITERIGHT
;IF LADDERABOVE
; ELSE
; SPRITELEFT
ENDIF
ENDIF
ENDIF
ENDIF
IF KEY DOWN
IF LADDERBELOW
LET IMAGE = 11
SPRITEDOWN
IF Q = 0
BEEP 35
ENDIF
LET DIRECTION = DOWN
ANIMATE MEDIUM
; ELSE
; SPRITELEFT
; IF LADDERBELOW
; ELSE
; SPRITERIGHT
; SPRITERIGHT
; IF LADDERBELOW
; ELSE
; SPRITELEFT
ENDIF
ENDIF
ENDIF
ENDIF
IF KEY FIRE
JUMP 7
ENDIF
FALL
IF DEADLY
KILL
ENDIF
GETBLOCKS