突破游戏数学 - 与DX的角度,Dy



我正在制作基本的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; }

我现在有点迷路了,很感激任何数学帮助。

编辑:我已经让游戏工作了,但是没有此功能可以改变球从桨上弹起的角度。

考虑移动球具有xy组件(如您对dxdy的要求所暗示)。由于您是在JavaScript中编写的,因此可以将这些值分配给您的ball对象,以便可以在每个tick上引用它们(即,每次您的程序计算游戏的当前状态并重新呈现所有显示对象时)。

暂时假设我们只是在处理桨,那么我们可以假设,当球击中桨时,水平运动因子(x)不会改变(我们不希望球向后移动桨..除了字面的边缘情况。)。而且,由于我们将桨叶视为反射表面,因此垂直运动因子(y)只会以向下的方式切换到向上的方式(通过-1乘法最容易完成)。

>

因此,您要寻找的"角度"实际上只是球运动属性的y组件的逆转。

最新更新