我正在尝试使游戏pong(我的数学真的很糟糕,我正在研究它)并尝试做弹跳球部分。
我试图计算击打墙壁或踏板后球的向外(反射)角度(墙壁始终水平,踏板始终垂直)
这是一张更好地演示它的图像:
这是我到目前为止尝试过的:
var m = (y2-y)/(x2-x);
var angle = (Math.atan(-m)*57.2957795);
但是,这似乎不起作用。
最佳答案
由于障碍物始终是垂直或水平的,因此您无需进行任何角度计算。
如果将球的位置存储为(x,y)并将速度存储为(vx,vy),则可以在每一帧计算下一个位置(x + vx,y + vy)
要从水平边框反弹,只需否定vy,要从垂直边框反弹否定vx。