Bonjour, j'ai commencé à coder un petit jeu de plateforme, mais je rencontre un problème avec la détection de collisions, je n'arrive pas à faire tomber le joueur quand il n'est plus sur une plateforme:
for lineIndex in range(len(map1)):
for blockIndex in range(len(map1[lineIndex])):
blockValue = map1[lineIndex][blockIndex]
x = blockIndex * blockSize
y = lineIndex * blockSize
rect = pygame.Rect(x,y,blockSize,blockSize)
if blockValue == 0:
pass
elif blockValue == 1:
pygame.draw.rect(screen, (0, 200, 0), (x, y, blockSize, blockSize))
et les collisions avec le joueur :
if not blockValue == 0 :
if (
player.x + player.w > x
and player.x < x + blockSize
and player.y + player.h > y
and player.y + player.h < y + 20
and player.jump == False
):
player.fall = False
player.velocity = 0
player.y = y - player.h
else:
player.fall =True
if (
player.x + player.w > x
and player.x < x + blockSize
and player.y < y + blockSize
and player.y > y + blockSize - 20
):
player.y = y + blockSize
player.jump=False
player.fall=True
player.velocity = 0
elif (
player.x + player.w > x
and player.x + player.w < x + player.speed + 2
and player.y + player.h > y
and player.y < y + blockSize
):
player.x -= player.speed
elif (
player.x < x + blockSize
and player.x > x + blockSize - player.speed - 2
and player.y + player.h > y
and player.y < y + blockSize
):
player.x += player.speed
C'est la ligne
else:
player.fall =True
qui pose problème car le joueur ne peux plus sauter du tout.
Python c'est bon, mangez-en.