我正在尝试使游戏pong(我的数学真的很糟糕,我正在研究它)并尝试做弹跳球部分。

我试图计算击打墙壁或踏板后球的向外(反射)角度(墙壁始终水平,踏板始终垂直)

这是一张更好地演示它的图像:



这是我到目前为止尝试过的:

var m  = (y2-y)/(x2-x);
var angle = (Math.atan(-m)*57.2957795);


但是,这似乎不起作用。

最佳答案

由于障碍物始终是垂直或水平的,因此您无需进行任何角度计算。
如果将球的位置存储为(x,y)并将速度存储为(vx,vy),则可以在每一帧计算下一个位置(x + vx,y + vy)

要从水平边框反弹,只需否定vy,要从垂直边框反弹否定vx。

09-19 21:54