我认为这个问题有点但很愚蠢,但我找不到答案。
我在做经典的乒乓球比赛。我希望球在任何角度都以相同的速度移动。但是使用我当前的算法(将 x 加一并计算 y)如果 y=ax+b 中的 a 很高,则每个像素之间存在很大的差距。我应该使用什么步骤?
我认为这个问题有点但很愚蠢,但我找不到答案。
我在做经典的乒乓球比赛。我希望球在任何角度都以相同的速度移动。但是使用我当前的算法(将 x 加一并计算 y)如果 y=ax+b 中的 a 很高,则每个像素之间存在很大的差距。我应该使用什么步骤?
你设置一个默认值speed
。然后你可以使用x+=speed*cos(theta)
and y+=speed*sin(theta)
。
当被击中时,你应该改变theta
.
所以我们有这样的事情:
newPoint
|\
| \
y | \ r
| θ\
|-----
x oldPoint
您基本上想要的是在与 r 而不是 x 相关的距离上迈出一步。
从初等三角:
cos θ = x/r
和sin θ = y/r
所以newX = oldX + r * cos θ
和newY = oldY + r * sin θ
您可以使用r
' 值(这基本上是移动速度)。
θ
将是球的方向。