Java 在斜边线的末端,图像从靠近终点的2个点来回反弹

Java 在斜边线的末端,图像从靠近终点的2个点来回反弹,java,android,Java,Android,我正在努力学习为Android制作游戏。我试图使图像沿着斜边线移动 我记下了数学和代码(我想,是从谷歌的某个地方得到的),但发生的是,当图像到达线的末端时,它会在目标点旁边的2个点之间“反弹”。就像它不能到达线的末端,所以它只能到达它能到达的最近的两个点,并在它们之间来回跳跃 问题是: 我怎样才能使它不从两点跳下来,并坚持到斜边线末端的点 这是我的密码: // to find the distance between the 2 points distX = endX - imaX; dist

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

我记下了数学和代码(我想,是从谷歌的某个地方得到的),但发生的是,当图像到达线的末端时,它会在目标点旁边的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);
谢谢:)
编辑:添加了问题并修复了我在这里犯的错误。

如果你搜索了这段代码,你应该继续搜索。如果你只想走一条线,这是一种令人困惑的过度杀伤力

考虑在两个维度上正好相距一个像素的情况:

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两个维度上都相距一个像素,它将尝试在每个方向上每次移动5个像素。不好

您还应该尝试实现帧率独立性,这是此代码无法处理的。网络上确实有关于这一点的报道

编辑:哦,应该是:

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

你把乘法和加法搞混了。

你忘了问一个问题。对不起,我只学了一周Java和android开发:)我该如何处理帧率独立的问题?你能给我指出正确的方向吗?如果你只做了一个星期,你可能需要一些基础知识,然后才能一路跳进去。我想了解一些关于Java游戏概念的好教程。