我想你的桨是矩形的吗?为简单起见,让我们假设球可能只撞击球拍的表面(即,不是角落或侧面)。
问:这取决于它在桨上的位置吗?答:如果桨是一个轴对齐的矩形,并且球只能撞击它的表面,那么不会。
问:桨是否移动有关系吗?答:这是你的选择。游戏物理不是真正的物理,所以你可以自由地做任何让游戏玩得最好的事情。
首先,将球的方向旋转 90 度并不能准确地将球从墙上偏转。考虑一下球完全撞墙的极端情况。如果我将球旋转 90 度,那么球将在墙壁旁边平行移动。
我相信你目前正在做的事情,只是有点混乱地说,如果球撞到垂直的墙上,你就会反转球的水平方向。当然,这并不等同于将球的方向旋转 90 度。
如果我想将速度从桨传给球,我会将球的运动视为向量,将桨的运动视为向量。然后我将这两个向量加在一起。k
为了控制传递给球的速度,我会使用一个系数(我们称之为而不是 x,y 组件,这不是必需的)。
if (ball hits paddle):
k = 0.5;
// paddle only moves horizontally, which simplifies the math
paddle_vx = paddle_speed * paddle_xdirection;
ball_vx = cos(ball_direction) * speed + k*paddle_vx;
ball_vy = - sin(ball_direction) * speed // flips from the collision
ball_direction = atan2(ball_vy, ball_vx);
ball_speed = 100; // always constant