Как сделать непрерывный MotionPath?

Я построил MotionPath для своего Spatial, добавив путевые точки. Это работает нормально, когда я делаю что-то вроде этого

path.addWayPoint(new Vector3f(0, 0, 0));
path.addWayPoint(new Vector3f(2, 0, 0));
path.addWayPoint(new Vector3f(4, 0, 0));
path.addWayPoint(new Vector3f(6, 0, 0));

Я хотел переместить его динамически, поместив путевые точки в метод, подобный этому

public void moveSpatial(float x) {
    Vector3f currentTranslation = spatial.getLocalTranslation();
    path.addWayPoint(currentTranslation.x, 0, 0);
    path.addWayPoint(currentTranslation.x + x, 0, 0);
}

и в методе simpleUpdate я добавил

spatial.setLocalTranslation(new Vector3f(newX, 0, 0);

где

float newX = currentTranslation.x + x;

Теперь анимация (плавное перемещение) работает НО каждый раз, когда я вызываю метод moveSpatial, пространственный объект сначала отправляется в начальную точку Vector3f (0, 0, 0), а затем он перемещается по путевым точкам. (0, 0, 0) - это положение, заданное для пространственного объекта при запуске приложения. Я хотел бы сделать движение из последней позиции, где пространственно закончилось его движение. Как это сделать?

1 ответ

Я нашел решение, и оно действительно простое:) Чтобы предотвратить это странное поведение, необходимо добавить в обработчик путевых точек изменение localTranslation. Когда новая путевая точка будет добавлена ​​из последней текущей позиции, она начнется там, где закончилась

Другие вопросы по тегам