我正在努力学习为Android制作游戏。我试图让图像沿着斜边线移动。
我得到了数学和代码(我认为,从谷歌的某个地方得到它)但是当它移动到线后(它看起来很好)在图像到达结束时会发生什么它在目的地点旁边的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);
谢谢:) 编辑:添加了问题并修复了我在这里犯的错误。
答案 0 :(得分:0)
如果您使用Google搜索此代码,则应继续使用Google搜索。如果你想做的就是走一条线,这是一个令人困惑的过度杀伤。
考虑两个维度中距离正好一个像素的情况:
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个像素。不好
您还应该尝试实现帧速率独立性,这是此代码无法处理的。网上有关于此的字面tons of articles。
编辑:哦,它应该是:
hyp = Math.sqrt(distX*distX + distY*distY);
你混淆了一个加法。