将对象移向点android

时间:2013-02-08 00:03:29

标签: java android

我在子弹对象的初始化中有这个:

    x = startX;
    y = startY;
    double distance = Math.sqrt(((endX - x) ^ 2) + ((endY - y) ^ 2));
    speedX = (6 * (endX - x)) / distance;
    speedY = (6 * (endY - y)) / distance;

它转到我在屏幕上触摸的位置,但是我触摸得越远,它就越快。这在纸上工作得很好,我尝试了不同的长度它应该工作,但是子弹需要在玩家的线上移动6个像素到每一步触摸的点。它的更新方法当然也在移动。但为什么子弹以不同的速度移动?

2 个答案:

答案 0 :(得分:3)

如果我记得我的Java运营商......

替换

double distance = Math.sqrt(((endX - x) ^ 2) + ((endY - y) ^ 2));

double distance = Math.sqrt(Math.pow(endX - x, 2) + Math.pow(endY - y, 2));

答案 1 :(得分:0)

假设所有测量都以像素为单位,并且您希望每步的速度为6像素,那么您可以使用一点点触发来计算速度:

double theta = Math.atan2(endY - startY, endX - startX);
velX = 6 * Math.cos(theta);
velY = 6 * Math.sin(theta);

请注意,我正在使用术语“速度”和“速度”作为物理学家;速度是标量值,速度是具有幅度和方向的矢量。