我正在制作基本的JavaScript突破游戏,但我还没有真正学过数学,所以我遇到了一些问题。
我想让球击中桨,并以一定角度弹跳,取决于桨的位置。
我刚刚制作了此功能,当球击中桨时,它从0-180度计算角度。该角度是球需要移动的角度(我现在知道,如果球撞到桨的尖端,那将是一个问题,但稍后我会处理),现在我需要找到一种方法来获得一个DX和DY来自此,我知道我需要使用三角学进行此操作。(x是球的X坐标的变量)
function getBallAngle(){
const maxAngle = 180;
let hitPosition = (x - paddleX);
let ballAngle = 0;
const scaleToAngle = maxAngle / (paddleWidth);
ballAngle = hitPosition * scaleToAngle;
return ballAngle; }
我现在有点迷路了,很感激任何数学帮助。
编辑:我已经让游戏工作了,但是没有此功能可以改变球从桨上弹起的角度。
考虑移动球具有x
和y
组件(如您对dx
和dy
的要求所暗示)。由于您是在JavaScript中编写的,因此可以将这些值分配给您的ball
对象,以便可以在每个tick上引用它们(即,每次您的程序计算游戏的当前状态并重新呈现所有显示对象时)。
暂时假设我们只是在处理桨,那么我们可以假设,当球击中桨时,水平运动因子(x
)不会改变(我们不希望球向后移动桨..除了字面的边缘情况。)。而且,由于我们将桨叶视为反射表面,因此垂直运动因子(y
)只会以向下的方式切换到向上的方式(通过-1
乘法最容易完成)。
因此,您要寻找的"角度"实际上只是球运动属性的y
组件的逆转。