pygame 矩形碰撞小于图像
pygame rect collision smaller than image
如何在 pygame 中定义小于图像的矩形碰撞检测?
我想要像第二张图片那样的碰撞模式,但是当我尝试在 rect 方法中设置宽度和高度时,我得到了一张剪切图片。
当我尝试使用图像大小进行设置时,我的碰撞检测显示为红色
self.rect = pygame.rect.Rect(location, self.image.get_size())
如果我使用宽度和高度设置尺寸,我只有第三张图片
self.rect = pygame.rect.Rect(location, (32, 150))
我真的不想使用像素完美碰撞,因为它是最慢的碰撞检测,所以有人知道如何使用 Rect 实现第二种图像碰撞方法?谢谢
尝试绘制一个与图像后面的图像分开的全新矩形,但如果图像始终将其位置设置为那个位置。
看来您正在使用 sprite
模块中内置的 pygames。 (如有错误请指正)
您可能知道每个精灵都包含一个 image
(绘制在表面上)和一个 rect
对象(设置 image
的位置和大小 (!))。
正如 Luke Taylor 所建议的,您可以在 player
class …
中创建一个 new rect
对象
self.collideRect = pygame.rect.Rect((0, 0), (32, 150))
... 并将其位置(根据您的图形)设置为
self.collideRect.midbottom = self.rect.midbottom
每次更改 player
的位置时,您也必须调用此行,因此您的 self.collideRect
矩形对象 "moves"你的 player
在屏幕上。
要测试一个点(例如鼠标坐标)是否在 self.collideRect
内,请调用
if self.collideRect.collidepoint(x, y) == True:
print("You clicked on me!")
如何在 pygame 中定义小于图像的矩形碰撞检测? 我想要像第二张图片那样的碰撞模式,但是当我尝试在 rect 方法中设置宽度和高度时,我得到了一张剪切图片。
当我尝试使用图像大小进行设置时,我的碰撞检测显示为红色
self.rect = pygame.rect.Rect(location, self.image.get_size())
如果我使用宽度和高度设置尺寸,我只有第三张图片
self.rect = pygame.rect.Rect(location, (32, 150))
我真的不想使用像素完美碰撞,因为它是最慢的碰撞检测,所以有人知道如何使用 Rect 实现第二种图像碰撞方法?谢谢
尝试绘制一个与图像后面的图像分开的全新矩形,但如果图像始终将其位置设置为那个位置。
看来您正在使用 sprite
模块中内置的 pygames。 (如有错误请指正)
您可能知道每个精灵都包含一个 image
(绘制在表面上)和一个 rect
对象(设置 image
的位置和大小 (!))。
正如 Luke Taylor 所建议的,您可以在 player
class …
rect
对象
self.collideRect = pygame.rect.Rect((0, 0), (32, 150))
... 并将其位置(根据您的图形)设置为
self.collideRect.midbottom = self.rect.midbottom
每次更改 player
的位置时,您也必须调用此行,因此您的 self.collideRect
矩形对象 "moves"你的 player
在屏幕上。
要测试一个点(例如鼠标坐标)是否在 self.collideRect
内,请调用
if self.collideRect.collidepoint(x, y) == True:
print("You clicked on me!")