基本突破缩放数学

时间:2017-01-24 08:41:40

标签: javascript math physics

我目前正在开展一场突破性比赛,而且我遇到了数学问题。这是场景。

球具有水平速度,名为bxspd。 球有一个名为bx的X坐标。 球具有最大速度,名为bspd。 蝙蝠有x坐标,名为px。

当球与球棒碰撞时,它需要在相对于球棒位置的水平方向上反弹。换句话说:

//碰撞事件 bxspd = bx - px。

这样,当球击中击球的左侧时,球会向左侧反弹。蝙蝠中心的左侧越远,它的水平速度越快到左侧。

问题是我的蝙蝠距离中心的每侧宽度为50。如何将其缩放到球的最大速度?所以换句话说,如果它击中了球棒的最左角,则bxspd变为-2而不是-50?

此致 克拉丽斯

2 个答案:

答案 0 :(得分:0)

假设球击中球棒的外右边缘,那么球的额外速度为extrabatspeed,在中心位置为0,在左侧得到-extrabatspeed。蝙蝠的宽度为batwidth,它与batcollisionx处的球碰撞,其值介于0和batwidth之间。我假设x轴从左到右。

然后,您可以将ballspeedx中的更改计算为2 * extrabatspeed * ballcollisionx / batwidth - extrabatspeed

碰撞ballspeedy变为否定。

之后应该发生加速球速度。将速度计算为sqrt(x^2 + y^2),并用相同的因子校正x和y。

答案 1 :(得分:0)

在写完问题之后,某些东西会被点击到位,所以这里是需要它的人的解决方案。

bdx =((bx - (px +(pwidth / 2)))/(pwidth / 2))* bspd;

bdx是球的x速度。 bx是球的xposition。 px是蝙蝠的xposition。 pwidth是蝙蝠的宽度。 bspd是球的最大速度变量,因此bdx是相对于最大球速(bspd)计算的。

请注意,此公式也适用于偏移量。原因是玩家的X位于蝙蝠的最左侧。因此,为了找到中心,我们将pwidth / 2添加到玩家的x以找到中心。