问题描述
所以我在做游戏,我需要屏幕宽度和高度的碰撞,但是我不知道该怎么实现。
我尝试这样做:
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)