最近のプラットフォームで作業している間、私はゲームで使用されている斜めのプラットフォームのスプライトで発生する衝突の問題に遭遇しました。私は斜めのスプライトに衝突マスクを実装しようとしました。うまくいけば、この面倒なエラーに対処します。しかし、私がプログラムを実行すると、このジッタのエラーが発生します。プレーヤーのスプライトが傾斜したプラットフォーム上で上下にバウンスします。他のプラットフォームのように傾斜したプラットフォームスプライトを実装しようとすると、プレーヤはスプライトを矩形本当に三角形のスプライトであるとき。私は上記のテキストがそれ以来作られていない場合、私はもっと詳しく説明してくれることを喜んでお待ちしております。どんな提案も高く評価されています:)斜めのプラットフォームスプライトでのPygameの衝突の不具合
私はこのエラーが次のコードセグメントのいずれかであると考えています。より多くのコードを参照する必要があると感じる場合は、より多くのコードを提供することができます。
class Platform(pygame.sprite.Sprite):
def __init__(self, id, x, y):
pygame.sprite.Sprite.__init__(self)
self.tile_images = []
self.get_images()
self.id = int(id)
self.image = self.tile_images[self.id]
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
if self.id == 5 or self.id == 4: #4 and 5 are the slanted platform sprites
self.mask = pygame.mask.from_surface(self.image)
私のゲームクラスの更新セクション。
def update(self):
self.player_sprite.update()
if self.player.rect.x <= 0:
self.player.direction = "R"
self.player.rect.x = 0
if self.player.vel.y > 0:
hits = pygame.sprite.spritecollide(self.player, self.platform_list, False)
if hits:
lowest = hits[0]
for hit in hits:
if hit.rect.bottom > lowest.rect.bottom:
lowest = hit
if self.player.rect.y < lowest.rect.centery:
self.player.pos.y = lowest.rect.top + 1
self.player.vel.y = 0
self.player.jumped = False
重力エラーですか?
def update(self):
self.animate()
self.acc.x += self.vel.x * PLAYER_FRICTION
self.vel += self.acc
if abs(self.vel.x) < 0.1:
self.vel.x = 0
self.pos += self.vel + 0.5 * self.acc
self.rect.midbottom = self.pos
self.acc = vec(0, PLAYER_GRAV)