python - pygame矩形碰撞小于图像

标签 python image pygame collision rect

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

enter image description here

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

    self.rect = pygame.rect.Rect(location, self.image.get_size())

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

    self.rect = pygame.rect.Rect(location, (32, 150))

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

最佳答案

看来您正在使用 sprite 模块中内置的 pygames。 (如有错误请指正)

您可能知道每个 Sprite 都包含一个图像(绘制在表面上)和一个rect 对象(设置 image 的位置和大小 (!))。

正如 Luke Taylor 所建议的,您可以在 player 类中创建一个new rect 对象……

self.collideRect =  pygame.rect.Rect((0, 0), (32, 150))

...并将其位置(根据您的图形)设置为

self.collideRect.midbottom = self.rect.midbottom

每次你改变你的player的位置,你也必须调用这一行,所以你的self.collideRect rect对象“移动”在屏幕上显示您的播放器

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

if self.collideRect.collidepoint(x, y) == True:
    print("You clicked on me!")

关于python - pygame矩形碰撞小于图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28805271/

相关文章:

python - 使用 ModernGL 为 pygame 创建上下文

python - numpy - 附加到数组而不制作副本

python - 将 gspread 与代理一起使用

java - 在java中序列化多个protobuf消息并在Python中反序列化

image - 使用matlab在ssh服务器中读取远程图像

python-3.x - 按下按钮即可持续移动

python - NumPy 数组中满足值和索引条件的元素的索引

jQuery追加用img替换图像

ios - UIButton背景图像不清晰

python - 使图像背景透明的问题: pygame