我对Python很陌生,但我环顾四周,没有看到任何与我想要做的事情相符的事情。
我正在使用PyGame在三个物体(球,方形A,方形B)之间进行碰撞检测。我想要做的是,如果球击中方形B,则会出现X,但前提是它已击中方形A.因为这是一个连续发生的循环,我不能简单地将ballAcollide设置为true,因为它会立即重置。
我目前有一些有用的东西,但我确信这是一个丑陋的解决方法,而且还有更好的方法。以下是相关代码段:
def fastball(ball, squareA, squareB):
# This needs to be improved
if ball.rect.colliderect(squareA.rect):
# do unrelated
global firsthit
firsthit = False
elif ball.rect.colliderect(squareB.rect):
try:
if not firsthit:
# do X
except NameError:
# do nothing
答案 0 :(得分:1)
根据PatrickArtner的建议回答:
def fastball2(ball, squareA, squareB, list):
if ball.rect.colliderect(squareA.rect):
if len(list) == 0:
list.append('A')
# do unrelated
elif ball.rect.colliderect(squareB.rect) and len(list) > 0:
# do x
然后,如果满足某些条件,则在循环中的不同点刷新列表。感谢帮助!