演员在目标Vector2附近时摇晃

时间:2019-03-25 19:56:07

标签: java libgdx

问题是,当Actor / Entity移向点击位置时,角色在距其大约1个图块的位置开始抖动,因为它向上移动了7个像素,然后又向下移动了7个像素,没有到达目的地。

我尝试了几种不同的方法,但是所有方法似乎都以相同的方式结束,可能有可能只需要增加几个像素,但是由于速度为7,它移动的太远,然后向后移动。 / p>

if (Objects.nonNull(next)) {
            if (this.getDistanceVector(next) <= 64) {
                return;
            }

            double destX = next.y*64 - this.getX();
            double destY = next.x*64 - this.getY();

            double dist = Math.sqrt(destX * destX + destY * destY);
            destX = destX / dist;
            destY = destY / dist;

            double travelX = (destX * speed);
            double travelY = (destY * speed);

            this.moveBy((float) travelX, (float)travelY);
        } else {
            moveTo = null;
        }

它应该走到该位置并停止,当前它正在关闭,然后根据点击位置在x轴或y轴上摇动。

1 个答案:

答案 0 :(得分:0)

通过检查速度是否大于距离,我能够平稳过渡而没有抖动。

if (speed > dist) {
                destX = target.y - this.getX();
                destY = target.x - this.getY();

                destX = destX / dist;
                destY = destY / dist;

                double travelX = (destX * speed);
                double travelY = (destY * speed);

                this.setX((int)travelX);
                this.setY((int)travelY);
            } else {
                destX = destX / dist;
                destY = destY / dist;

                double travelX = (destX * speed);
                double travelY = (destY * speed);

                this.moveBy((float) travelX, (float)travelY);
            }