4

我正在做一个简单的突破游戏,但我有一些问题要理解我应该如何处理球的速度和方向,以使其在不同的对角线路径上移动。我在更新方法中使用此代码:

xPos += xSpeed * direction;
yPos += ySpeed * direction;

如果我使用不同的值xSpeed = 2YSpeed = 1我可以更改为不同的对角线路径,但我仍然想要相同的速度。如果我增加 的值xSpeed = 4以获得另一条对角线路径,那么速度也会增加,我希望球以相同的速度移动。对于directionI 的值,使用 1 或 -1。但我想改变 的值direction以获得对角线路径的度数会更好吗?在突围比赛中,球必须朝相反的方向反弹。我数学不好,所以我会寻求一些帮助来解决这个问题。有什么想法可以改进我的代码吗?

4

1 回答 1

4

您可以使用sineandcosine函数来获得xy轴的相对运动。

像:

xPos += speed * Math.sin(movementAngle);
yPos += speed * Math.cos(movementAngle);

在各种动画中使用上述(极坐标)具有易于修改方向或运动速度(分别是speedmovementAngle变量)的优点。使用笛卡尔坐标(x和位置)时,速度或运动方向的变化将需要对和y进行不明显的更改。xy

上述解决方案中的公式只不过是从极坐标到笛卡尔坐标的转换。

编辑:要获得更“自然”的行为,当movementAngleof0意味着向右移动时,PI/2-向上,PI-向左和3*PI/2-向右,请使用以下命令:

xPos += speed * Math.cos(-1*movementAngle);
yPos += speed * Math.sin(-1*movementAngle);
于 2013-03-28T07:38:49.610 回答