简体   繁体   中英

How do I make a rectangular sprite stop when it collides with another rectangular sprite using pygame?

I'm trying to create some obstacles for the player in my program. I can't figure out how to make the sprite stop when it comes in contact with it from all sides.

I tried to use pygame.sprite.collide_rect and pygame.sprite.spritecollide , but couldn't figure out how to do it.

If you could just try to explain the concept, I'd rather try to figure the rest out myself. Thanks in advance!

def move_rect():
    new_pos = player_rect.pos
    new_pos = new_pos[0]+dx,new_pos[1]+dy
    new_rect = rect(new_pos,player_rect.size)
    for enemy in enemy_rects:
        if new_rect.colliderect(enemy):
           dx,dy=dx*-1,dy*-1 #reverse direction to "bounce"
           #alternatively you could just return here probably

    player_rect.move(dx,dy) #do the move, no collisions

something like that at least ... (I doubt it will work, its more to give you the concept)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM