如何在pygame中使用屏幕宽度和高度进行碰撞检测

问题描述

所以我在做游戏,我需要屏幕宽度和高度的碰撞,但是我不知道该怎么实现。

我尝试这样做:

EditText

这:

if rect1.right.colliderect(screen_width):
    rect1.x = 50
    rect1.y = 270

,但两种方法均无效。请帮忙。

解决方法

鉴于您的显示表面被命名为screen,您将获得一个Rect,它用get_rect()来描述您的屏幕(就像您可以在其他Surface上进行的操作一样),喜欢

screen_rect = screen.get_rect()

因此,要检查Rect rect1是否仍在屏幕内,可以使用contains方法:

if not screen_rect.contains(rect1):
    print('rect1 out of screen')

您还可以通过简单地使用clamp_ip来防止rect1移出屏幕,例如在您的主循环中执行以下操作:

rect1.clamp_ip(screen_rect)

rect1将永远不会离开屏幕。

,

当我将此函数放在播放器类中时,您可以只使用函数内部的线,它只会先创建矩形,然后才能检测到碰撞

    def collision(self,obj,window):
        return pygame.draw.rect(window,red,(self.x,self.y,25,25)).colliderect(obj)