ここに私の衝突コードです。それは私のプレーヤースプライトは、部分的に私から入力側に応じて、壁の内側と外側で歩くことを可能にする以外どのようにして衝突を修正できますか?
def collide_with_walls(self, dir):
if dir == 'x':
hits = pg.sprite.spritecollide(self, self.game.walls, False)
if hits:
if self.vel.x > 0:
self.pos.x = hits[0].rect.left - self.rect.width
if self.vel.x < 0:
self.pos.x = hits[0].rect.right
self.vel.x = 0
self.rect.x = self.pos.x
if dir == 'y':
hits = pg.sprite.spritecollide(self, self.game.walls, False)
if hits:
if self.vel.y > 0:
self.pos.y = hits[0].rect.top
if self.vel.y < 0:
self.pos.y = hits[0].rect.bottom
self.vel.y = 0
self.rect.y = self.pos.y
すべてが、うまく動作します。
画像1:部分的に壁に歩くことができます。 画像2:これ以上歩くことはできません。