0

我正在努力学习为 Android 制作游戏。我正在尝试使图像沿斜边线移动。

我把数学和代码记下来了(我想,是从谷歌的某个地方得到的),但是当图像到达行尾时,会发生这种情况在目标点旁边的 2 个点之间“反弹”。就像它无法到达行尾,所以它只会到达它可以到达的最近的 2 个点,并在它们之间来回跳跃。

问题:我如何让它不从 2 点跳到斜边线末端的点?

这是我的代码:

// to find the distance between the 2 points 
distX = endX - imaX;
distY = endY - imaY;
// find the hypotenuse
hyp = Math.sqrt(distX*distX + distY*distY);
// don't know what this is for 
len = 160/hyp;
distX *= len;
distY *= len;

// and to move the image. The points have to be an int.
imaX += (int) (distX * 0.05); 
imaY += (int) (distY * 0.05);

谢谢:) 编辑:添加了问题并修复了我在这里犯的错误。

4

1 回答 1

0

如果你用谷歌搜索过这段代码,你应该继续用谷歌搜索。如果您只想走一条线,那将是一种令人困惑的矫枉过正。

考虑一下你在两个维度上都只有一个像素的情况:

distX = 1
distY = 1
hyp = sqrt(2) ~1.414
len = 160/hyp ~ 113.15

imaX += (113.15 * 0.05) ~ 5
imaY += (113.15 * 0.05) ~ 5

因此,如果您在两个 X/Y 维度上都相距 1 个像素,它会尝试在每个方向上每次移动 5 个像素。不好

您还应该尝试实现帧速率独立,这是此代码无法处理的。网络上有大量关于此的文章。

编辑:哦,应该是:

hyp = Math.sqrt(distX*distX + distY*distY);

您将乘法与加法混淆了。

于 2013-02-11T00:14:34.877 回答