python-what';我的球/球拍碰撞和反射有什么问题?

python-what';我的球/球拍碰撞和反射有什么问题?,python,collision-detection,collision,Python,Collision Detection,Collision,我写了一个突破式的游戏,除了球棒碰撞和反射之外,它都可以工作。它的工作原理是,如果球在击球时从左向右移动: 如果它击中左端,它会反弹回原来的方向 如果它击中右端,它会朝着同一方向反弹 对于从右向左的方向,反之亦然。以及: 如果它击中中间区域,它会以相同的角度反弹回来 如果击中左/右中心区域,则会反弹,角度略有变化 它有时也会穿过球棒,甚至当球越过球棒时,应该会反弹,这让人困惑,但我认为可能是因为“BH==bat.y”线,因为球以一定角度移动,所以可能会稍微翻转,然后继续 代码:(BAW/H=球拍

我写了一个突破式的游戏,除了球棒碰撞和反射之外,它都可以工作。它的工作原理是,如果球在击球时从左向右移动:

如果它击中左端,它会反弹回原来的方向 如果它击中右端,它会朝着同一方向反弹

对于从右向左的方向,反之亦然。以及:

如果它击中中间区域,它会以相同的角度反弹回来 如果击中左/右中心区域,则会反弹,角度略有变化

它有时也会穿过球棒,甚至当球越过球棒时,应该会反弹,这让人困惑,但我认为可能是因为“BH==bat.y”线,因为球以一定角度移动,所以可能会稍微翻转,然后继续

代码:(BAW/H=球拍宽度/高度,BW/H=球拍宽度/高度)

#用bat检查
如果ball.y+BH==thebat.y和(theball.x>=thebat.x-5和theball.x=thebat.x+40和theball.cx thebat.x+10和theball.cx=最大角度:
角度=最大角度
theball.dx,theball.dy=calc_dxdy(角度)
返回
#球从右向左移动
如果theball.oldx>theball.x:#球从右向左移动,找到哪个区域:端点、中左、中右、中心
#右端碰撞
如果theball.cx>=thebat.x+90:
#球反弹回它原来的方向
theball.dx=-theball.dx
theball.dy=-theball.dy
返回
#右端碰撞
如果选择Ball.cx最大角度:
角度=最大角度
theball.dx,theball.dy=calc_dxdy(角度)
返回
#中左和中右
#中左
如果(theball.cx>thebat.x+10和theball.cx=最小角度:
角度=最小角度
theball.dx,theball.dy=calc_dxdy(角度)
返回

你是对的,这是因为

theball.y+BH == thebat.y 
从某个角度看,球不太可能完全处于正确的高度。 试着增加一些不确定性。例如:

UNCERTAINTY = 10
if theball.y+BH - UNCERTAINTY <= thebat.y <= theball.y+BH + UNCERTAINTY and ...
不确定度=10
如果球.y+BH-不确定性
UNCERTAINTY = 10
if theball.y+BH - UNCERTAINTY <= thebat.y <= theball.y+BH + UNCERTAINTY and ...