Python 在pygame中,如何使用旋转和移动的汽车旋转我的hitbox?

Python 在pygame中,如何使用旋转和移动的汽车旋转我的hitbox?,python,python-3.x,pygame,Python,Python 3.x,Pygame,我正在尝试将我的汽车精灵与另一个矩形碰撞,现在我正在使用矩形碰撞和我的汽车碰撞,但每次我旋转hitbox时,它都会移动到其他地方 有没有一种方法可以让我的汽车精灵和那个保险箱相撞,而不是用汽车保险箱 我的汽车等级: 等级车: 定义初始值(自、x、y、高度、宽度、颜色): self.x=x-宽度/2 self.y=y-高度/2 自我高度=高度 self.width=宽度 self.color=颜色 self.rect=pygame.rect(x,y,高度,宽度) self.surface=pyga

我正在尝试将我的汽车精灵与另一个矩形碰撞,现在我正在使用矩形碰撞和我的汽车碰撞,但每次我旋转hitbox时,它都会移动到其他地方

有没有一种方法可以让我的汽车精灵和那个保险箱相撞,而不是用汽车保险箱

我的汽车等级:

等级车:
定义初始值(自、x、y、高度、宽度、颜色):
self.x=x-宽度/2
self.y=y-高度/2
自我高度=高度
self.width=宽度
self.color=颜色
self.rect=pygame.rect(x,y,高度,宽度)
self.surface=pygame.surface((高度、宽度),pygame.SRCALPHA)
自表面blit(img,(0,0))
自转角=250
自速度=0#2
self.hitbox=(self.x+90,self.y+62037063)#CARS hitbox
pygame.draw.rect(窗口,(255,0,0),self.hitbox,2)
def绘图(自身):#3
self.rect.topleft=(int(self.x)、int(self.y))
旋转=pygame.transform.rotate(self.surface,self.angle)
surface_rect=self.surface.get_rect(topleft=self.rect.topleft)
新建直线=旋转。获取直线(中心=曲面直线。中心)
窗口blit(旋转,新右上左)
self.hitbox=(self.x,self.y,70,40)#汽车hitbox在汽车x,y上闪烁
pygame.draw.rect(窗口,(255,0,0),self.hitbox,2)#绘制汽车hitbox
白色=(255,255,255)
car1=汽车(10063073 73白色)#4
我的全部代码是

在pygame中,如何使用旋转和移动的汽车旋转我的hitbox

你没有。你必须使用和。 可以从by创建遮罩,该遮罩包含有关不透明像素的信息<代码>重叠()在相交的两个遮罩中查找1个不透明像素

例如:

等级车:
# [...]
def牵引(自):
# [...]
self.mask=pygame.mask.from_曲面(旋转)
self.mask\u rect=new\u rect
障碍物遮罩=pygame.mask.from_surface(障碍物_surface)
偏移量x=障碍物x-car1.mask x
偏移量y=障碍物y-车辆1.遮罩y
如果车辆1.遮罩重叠(障碍物遮罩,(偏移x,偏移y)):
打印(“点击”)
注意,
overlap()
的offset参数是从这个掩码到另一个掩码(到第一个参数)的偏移量。它是参数中从掩码到另一掩码的向量。如果自身的位置为(x1,y1),而另一个的位置为(x2,y2),则偏移量为(x2-x1,y2-y1)


如果障碍物只是一个矩形,并且没有曲面(
障碍物曲面
),则可以从(
障碍物
)对象生成完全不透明的遮罩:

barrier\u mask=pygame.mask.mask(barrier\u rect.width,True)

你可以试试哪一种用于像素完美碰撞?请问障碍物曲面是什么?!?你要什么都行。任何其他
pygame.Surface
object.um我试图将我的car1.rect放在障碍物的曲面上,但我不确定为什么会出现错误,我应该使用什么对象,但我也不确定如何处理障碍物的rect.x??我把car1.x放进去了吗?另一辆车是1.y?@HabibIsmail否。你在测试另一辆车。所以障碍物不可能是汽车。哦,这样我就可以用我的另一个物体来测试它了?