Как сделать непрерывный 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. Когда новая путевая точка будет добавлена из последней текущей позиции, она начнется там, где закончилась