1 回答

TA贡献1893条经验 获得超10个赞
如何在 pygame 中用我旋转和移动的汽车旋转我的碰撞箱?
你不知道。你必须使用pygame.mask.Mask
和overlap()
。掩码可以从创建pygame.Surface
并pygame.mask.from_surface()
包含有关不透明像素的信息。overlap()
在相交的 2 个蒙版中找到 1 个不透明像素。
例如:
class Car:
# [...]
def draw(self):
# [...]
self.mask = pygame.mask.from_surface(rotated)
self.mask_rect = new_rect
obstacle_mask = pygame.mask.from_surface(obstacle_surface)
offset_x = obstacle_rect.x - car1.mask_rect.x
offset_y = obstacle_rect.y - car1.mask_rect.y
if car1.mask.overlap(obstacle_mask, (offset_x, offset_y)):
print("hit")
请注意, 的偏移量参数overlap()是从该掩码到另一个掩码(到第一个参数)的偏移量。它是参数中从掩码到另一个掩码的向量。如果self的位置是 ( x1 , y1 ) 而other的位置是 ( x2 , y2 ) 那么偏移量是 ( x2 - x1 , y2 - y1 )。
如果障碍物只是一个矩形并且您没有 Surface ( ),那么您可以从( ) 对象obstacle_surface生成一个完全不透明的 Mask :pygame.Rectobstacle_rect
obstacle_mask = pygame.mask.Mask(obstacle_rect.width, True)
添加回答
举报