1 回答

TA贡献1866条经验 获得超5个赞
您在这里问了几个不同的问题。我会在这里回答我认为你想问的问题:有没有办法检查整个精灵是否已经越过边界,而不仅仅是左上角?. 所以,我的回答(请注意,这仅在您的边界线是线性的情况下才有效):您需要单独检查每个角,然后,如果所有角都返回True,那么您继续前进。例子:
def collision(sprite1, boundary):
def internal_collision(point, boundary):
... # The actual math happens here, returns True/False
corners = []
for h in [0, 1]:
for j in [0, 1]:
corners.append([sprite1.rect.x+(h*sprite1.rect.width),
sprite1.rect.y+(j*sprite1.rect.height)])
corner_check = []
for corner in corners:
corner_check.append(internal_collision(corner, boundary))
return all(corner_check)
我不知道你的代码是如何工作的,所以我尽量保持它的可塑性和可理解性,这样你就可以在你自己的代码中重新实现它。
添加回答
举报