24 lines
1.1 KiB
Python
24 lines
1.1 KiB
Python
|
import pygame as pg
|
||
|
|
||
|
def collide_hit_rect(one, two):
|
||
|
return one.hit_rect.colliderect(two.rect)
|
||
|
|
||
|
def collide_with_walls(sprite, group, dir):
|
||
|
if dir == 'x':
|
||
|
hits = pg.sprite.spritecollide(sprite, group, False, collide_hit_rect)
|
||
|
if hits:
|
||
|
if hits[0].rect.centerx > sprite.hit_rect.centerx:
|
||
|
sprite.pos.x = hits[0].rect.left - sprite.hit_rect.width / 2
|
||
|
if hits[0].rect.centerx < sprite.hit_rect.centerx:
|
||
|
sprite.pos.x = hits[0].rect.right + sprite.hit_rect.width / 2
|
||
|
sprite.vel.x = 0
|
||
|
sprite.hit_rect.centerx = sprite.pos.x
|
||
|
if dir == 'y':
|
||
|
hits = pg.sprite.spritecollide(sprite, group, False, collide_hit_rect)
|
||
|
if hits:
|
||
|
if hits[0].rect.centery > sprite.hit_rect.centery:
|
||
|
sprite.pos.y = hits[0].rect.top - sprite.hit_rect.height / 2
|
||
|
if hits[0].rect.centery < sprite.hit_rect.centery:
|
||
|
sprite.pos.y = hits[0].rect.bottom + sprite.hit_rect.height / 2
|
||
|
sprite.vel.y = 0
|
||
|
sprite.hit_rect.centery = sprite.pos.y
|