Я пытаюсь разделить мою программу на модель и представление. Сначала я контролировал камеру на основе ввода, и все работало нормально. Теперь я решил создать класс CameraModel
и обновить реальную камеру на основе свойств CameraModel
. Проблема возникает, когда я создаю новый Box2D Body - тогда экран мерцает. Может быть, это не проблема камеры, но это происходит только тогда, когда я использую этот код:LibGDX - мерцание при настройке камеры
CameraModel model = level01.getCameraModel();
camera.up.set(model.getUp());
camera.position.set(model.getPosition());
camera.zoom = model.getZoom();
... вместо этого:
Body playerModel = level01.getPlayer().getBody();
Vector2 Pos = playerModel.getPosition();
Vector3 wv = new Vector3(Pos.x,Pos.y,0.0f);
camera.up.x = (float) Math.cos(playerModel.getAngle());
camera.up.y = (float) Math.sin(playerModel.getAngle());
camera.position.x = wv.x + camera.up.x * 200f;
camera.position.y = wv.y + camera.up.y * 200f;
Чтобы быть точным только тогда, когда я использую это line camera.position.set(model.getPosition());
. Каждый другой объект устанавливается без проблем. Что может вызвать мерцание?
Вы используете какой-либо коэффициент преобразования от пикселя до метра (единицы box2d)? Это откуда берется значение 200? Почему у вас есть верхний вектор камеры в вашем расчете позиции? – noone
@noone Вверх вектор есть, потому что мне не нужно центрировать камеру на объекте, а показывать этот объект в нижней части экрана. Спасибо за ваш интерес :), но я решил это уже - я передавал фактические векторы, а не копии где-то еще в коде. Я просто жду 20:20, поэтому я могу опубликовать свой ответ: D .. слишком низкая репутация у меня: / – chriemmy