【发布时间】:2019-07-03 21:30:48
【问题描述】:
我正在尝试在 python tkinter 中实现一个乒乓球游戏。我在画布的左侧有桨,我想检测球与桨的碰撞。我无法正确检测到碰撞,因为有时球刚刚穿过桨。请任何帮助表示赞赏,以下是我使用的碰撞检测代码,不知道它有什么问题。我正在尝试实现的是,如果球的位置在桨的顶部和底部之间以及左右之间,那么就会发生碰撞
def hit_paddle(self, pos):
""" pos(left, top, right, bottom)"""
paddle_pos = self.canvas.coords(self.shape)
if ball_pos[1] >= paddle_pos[1] and ball_pos[1] <= paddle_pos[3]:
if ball_pos[2] >= paddle_pos[0] and ball_pos[2] <= paddle_pos[2]:
return True
return False
【问题讨论】:
-
canvas.find_overlapped 可以给出与球重叠的所有元素的列表。如果有桨,那么你有碰撞。也许你可以在一行代码中做到这一点:
return (self.shape in self.canvas.find_overlapped(*ball_pos)) -
谢谢,我也试试这个。