อโดดถลาลงไปตัวหมากที่จะเคลื่อนคล้องกับเครื่องเล่น[ที่ซ้ำกัน]

0

คำถาม

ดังนั้นฉันกำลังหั่นชิ้นเรียงต่อเนื่องจาก platformer และฉันอย่าเอาคอลลิชันไปทำงานแล้ว

นี่รหัสเข้าห้องโถวแสดงตัวหมาก:

tile_rects = []
    y = 0
    for layer in game_map:
        x = 0
        for tile in layer:
            if tile == '1':
                display.blit(dirt, (x * tile_size, y * tile_size))
            if tile == '2':
                display.blit(grass, (x * tile_size, y * tile_size))
            if tile != '0':
                tile_rects.append(pygame.Rect(x * tile_size, y * tile_size, tile_size, tile_size))
            x += 1
        y += 1

แล้วรหัสพวกนี้ควรจะเป็นคนที่ทำให้คนคอลลิชันทำงานแต่มัน doesnt นี่คือที่เครื่องเล่นห้องเรียน

def collisions(self):
    global tile_rects
    self.rect.x += self.x_vel
    self.rect.y += self.y_vel
    for tile_rect in tile_rects:
        if self.rect.colliderect(tile_rect):
            if abs(tile_rect.top - self.rect.bottom) < 10:
                self.y_vel -= 1
            if abs(tile_rect.bottom - self.rect.top) < 10:
                self.y_vel += 1
            if abs(tile_rect.right - self.rect.left) < 10:
                self.x_vel -= 1
            if abs(tile_rect.left - self.rect.right) < 10:
                self.x_vel += 1
    else: tile_rects = []

มีแก้ไขข้อผิดพลาด?

pygame python
2021-11-23 13:16:31
1

คำตอบที่ดีที่สุด

0

คุณควรใช้ collidelistall() แทนที่จะเป็น colliderect(). มันจะตรวจสอบว่า rect ถ้าแตะต้องอะไร rect ของรายการแล้ว

2021-11-24 09:24:55

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่