Pygame图片矩形与除左壁以外的所有东西碰撞

问题描述 投票:0回答:1

[尝试为我的高中班级游戏创建开始屏幕。图像应该在屏幕上移动,与每堵墙碰撞并朝下一个方向移动。由于某些原因,图像不会与左墙碰撞,我无法弄清原因。

class StartScreen:
    def __init__(self):
        screen.fill(WHITE)
        self.fontTitle = pygame.font.SysFont("arial", 30) #
        self.textTitle = self.fontTitle.render("Legend Of Zelda: ", True, WHITE) 
        self.textRect = self.textTitle.get_rect(center=(displayWidth / 2, 50)) 
        self.moveImage = pygame.image.load("images/link_down1.png")
        self.moveImageRect = self.moveImage.get_rect()
        self.dx = 3
        self.dy = 0
        self.moveImageRect.x = 1
        self.moveImageRect.y = 11
    def update(self):
        if self.moveImageRect.right >= displayWidth:
            self.dy = 3
            self.dx = 0
        if self.moveImageRect.left <= 0:
            self.dy = -1
            self.dx = 0
        if self.moveImageRect.top <= 0:
            self.dy = 0
            self.dx = -3
        elif self.moveImageRect.bottom >= displayHeight:
            self.dx = -3
            self.dy = 0
        self.moveImageRect.move_ip(self.dx, self.dy)

    def draw(self, surf):
        screen.blit(backgroundImage, (backgroundRect)) 
        screen.blit(self.textTitle, self.textRect) 
        screen.blit(backgroundImage, (backgroundRect)) 
        screen.blit(self.moveImage, self.moveImageRect)
python pygame collision-detection
1个回答
0
投票
if self.moveImageRect.right > 500:
    dy = 1
    dx = 0
    self.moveImageRect.right = 500
elif self.moveImageRect.bottom > 500:
    dy = 0
    dx = -1
    self.moveImageRect.bottom = 500
elif self.moveImageRect.left < 0:
    dy = -1
    dx = 0
    self.moveImageRect.left = 0
elif self.moveImageRect.top < 0:
    dy = 0
    dx = 1
    self.moveImageRect.top = 0

这对我有用,仅检查图像是否移离屏幕,然后再将其移回屏幕,以确保图像不与墙壁碰撞。

© www.soinside.com 2019 - 2024. All rights reserved.