我想做经典的街机游戏打砖块,但我遇到了球和砖之间的碰撞问题。目前,我只是用(在乒乓等)的经典碰撞:pygame中的一个球和一个矩形之间的碰撞
def colision(self, objetivo):
if self.rect.colliderect(objetivo.rect):
self.speed[1] = -self.speed[1]
def colision2(self, objetivo):
if self.rect.colliderect(objetivo.rect):
self.speed[0] = -self.speed[0]
我的问题是,当球击中砖的不同部位,有时反弹走错了路,并最终“吃”比砖更多。我使用了两种不同类型的碰撞,因为我添加了边框,并且我也使它与它们反弹,但是我不知道如何让程序知道哪一面被撞击,并使用colision1
或colision2
,具体取决于侧。
只需在砖的两侧添加一个标识符,然后检查碰撞是垂直还是水平。或者,如果您实施适当的2D碰撞模型,则无需关心碰撞的方向。 – xvan
你能告诉我一个如何添加标识符和检查的例子吗?还有,我可以制作一个合适的二维碰撞模型吗? –