2013-11-22 6 views
1

Я пытаюсь разделить мою программу на модель и представление. Сначала я контролировал камеру на основе ввода, и все работало нормально. Теперь я решил создать класс 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());. Каждый другой объект устанавливается без проблем. Что может вызвать мерцание?

+0

Вы используете какой-либо коэффициент преобразования от пикселя до метра (единицы box2d)? Это откуда берется значение 200? Почему у вас есть верхний вектор камеры в вашем расчете позиции? – noone

+0

@noone Вверх вектор есть, потому что мне не нужно центрировать камеру на объекте, а показывать этот объект в нижней части экрана. Спасибо за ваш интерес :), но я решил это уже - я передавал фактические векторы, а не копии где-то еще в коде. Я просто жду 20:20, поэтому я могу опубликовать свой ответ: D .. слишком низкая репутация у меня: / – chriemmy

ответ

0

Проблема была у меня был грязный код и проходил фактические векторы, а не копии ... Таким образом, просмотр был очень быстрым.

 Смежные вопросы

  • Нет связанных вопросов^_^