У меня есть сенсорная панель, которую я хочу использовать для перемещения камеры. Мой текущий код перемещает камеру, добавляя вектор camera.direction, масштабированный на 1, к вектору положения. Кажется, я не могу использовать что-то меньшее, чем единица, потому что когда я это делаю, оно начинает странно вращаться. Я хочу использовать
touchpad.getKnobPercentX()
touchpad.getKnobPercentY()
методы масштабирования в зависимости от положения ручки. Проблема в том, что он возвращает значение меньше единицы. Все, что больше единицы, перемещает камеру слишком быстро. Это код, который я использую для обновления своей камеры, так как я не могу использовать ручку сенсорной панели.
private void setKnobAction() {
if (pad.getKnobPercentY() > 0f) {
camera.position.add(camera.direction.scl(1f));
camera.update();
}
if (pad.getKnobPercentY() < 0f) {
camera.position.sub(camera.direction.scl(1f));
camera.update();
}
if (pad.getKnobPercentX() > 0f) {
right = camera.direction.cpy().crs(Vector3.Y).nor();
camera.position.add(right.scl(1));
camera.update();
}
if (pad.getKnobPercentX() < 0f) {
right = camera.direction.cpy().crs(Vector3.Y).nor();
camera.position.sub(right.scl(1));
camera.update();
}
}
Этот метод вызывается в моем методе render(), поэтому он вызывается несколько раз. Кроме того, если ручкаPercent установлена на 0, она начнет странно вращаться.