krembrule2016
@krembrule2016

Как реализуется плавно перемещающаяся камера в 3д пространстве?

Всем привет! Всех с пятницей!
Встал такой вопрос - как реализовать плавно перемещающуюся камеру в 3д пространстве, которая бы управлялась клавишами навигации?
До недавнего времена я использовал вот такой код и был доволен.
scene.setOnKeyReleased(e -> codes.clear()); // очищаем коллекцию, когда отпускаем кнопку
        scene.setOnKeyPressed(e -> {
            if(acceptedKey.contains(e.getCode()))
            {
                codes.add(e.getCode());
                if(codes.contains(KeyCode.UP))
                {
                    ourcamera.setTranslateZ(ourcamera.getTranslateZ()+1);
                }
                if(codes.contains(KeyCode.DOWN))
                {
                    ourcamera.setTranslateZ(ourcamera.getTranslateZ()-1);
                }
                if(codes.contains(KeyCode.RIGHT))
                {
                    ourcamera.setTranslateX(ourcamera.getTranslateX()+1);
                }
                if(codes.contains(KeyCode.LEFT))
                {
                    ourcamera.setTranslateX(ourcamera.getTranslateX()-1);
                }
            }
        });

У такого подхода есть минусы - если мы будем наращивать координату больше, чем на 1, то камера будет прыгать.
Тогда я подумал, что можно попробовать TranslateTransition (). Показывать реализацию с этой байдой я не стану, т.к. мне кажется это неверный подход и плавающая камера реализуется как-то иначе. Но там фишка в том, что необходимо использовать stop(), чтобы запускать следующую анимацию, а это значит движение камеры между разными типами анимаций будет прерываться.
Вообщем, что делать?
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
Beshere
@Beshere
Разработчик
Придётся вводить понятия: скорость/ускорение камеры, сила трения. Плюс физика за 6 класс. Тогда камера будет плавно ускорятся и тормозить.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы