pygame rect碰撞小于图像

Wan*_*ira 5 python pygame image rect collision

如何在pygame中定义小于图像的矩形碰撞检测?我想要像第二个图像那样的碰撞模式,但是当我尝试在方法 rect 中设置宽度和高度时,我有一个剪切图像。

在此处输入图片说明

当我尝试使用图像大小进行设置时,碰撞检测显示为红色

    self.rect = pygame.rect.Rect(location, self.image.get_size())
Run Code Online (Sandbox Code Playgroud)

如果我使用宽度和高度设置大小,我只有第三张图片

    self.rect = pygame.rect.Rect(location, (32, 150))
Run Code Online (Sandbox Code Playgroud)

我真的不喜欢使用像素完美碰撞,因为它是最慢的碰撞检测,所以有人知道如何使用 Rect 实现第二种图像碰撞方法?谢谢。

ele*_*ent 3

看来您正在使用内置sprite模块的 pygames 。(如果我说错了请指正)

\n\n

image您可能知道每个精灵都由一个(绘制在表面上)和一个rect对象(设置对象的位置和大小(!) )组成image

\n\n

正如 Luke Taylor 所建议的,您可以在类 \xe2\x80\xa6中创建一个 rect对象player

\n\n
self.collideRect =  pygame.rect.Rect((0, 0), (32, 150))\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\xa6 并将其位置(根据您的图形)设置为

\n\n
self.collideRect.midbottom = self.rect.midbottom\n
Run Code Online (Sandbox Code Playgroud)\n\n

每次你改变你的位置时player,你也必须调用这条线,这样你的self.collideRect矩形对象就会随着你在屏幕上的“移动”player

\n\n

要测试一个点(例如鼠标坐标)是否在 内self.collideRect,请调用

\n\n
if self.collideRect.collidepoint(x, y) == True:\n    print("You clicked on me!")\n
Run Code Online (Sandbox Code Playgroud)\n