Я делаю 2D-нисходящую игру в LibGDX, используя орфографическую камеру. Камера должна следить за игроком, вращаться вместе с ним и т. Д. Я также использую Box2D, что означает, что каждый спрайт обновляется по координатам и углу модели. И я хочу сделать то же самое с камерой.LibGDX - Перевод и ротация орфографической камеры
Этот код:
Vector3 v = new Vector3(playerModel.getPosition().x, playerModel.getPosition().y, 0);
camera.rotateAround(v, Vector3.Z, -playerModel.getAngle() * MathUtils.radiansToDegrees);
camera.translate(deltaMove);
camera.update();
дает мне только относительное перемещение и вращение - относительно текущего положения и угла наклона камеры. И хотя это работает, я не думаю, что это самое лучшее, это ?:
Vector3 v = new Vector3(playerModel.getPosition().x, playerModel.getPosition().y, 0);
camera.up.x = (float) Math.cos(playerModel.getAngle());
camera.up.y = (float) Math.sin(playerModel.getAngle());
camera.position.x = v.x;
camera.position.y = v.y;
camera.update();
Можно ли сделать это плавный путь с орфографической камеры или я должен использовать КЛАССИС 3D-камеру?
Вы устанавливаете положение и угол, полностью синхронизированный с плеером. Как вы хотите, чтобы он был более гладким? – noone
Почему у него нет сеттеров? Я даже не могу изменить вектор vector.position (потому что он окончательный) только его свойства, поэтому я подумал, что это не правильный способ установки камеры. Nevermind :) – chriemmy
Я не знаю, почему именно так. Вы по-прежнему можете использовать функцию camera.position.set (...), которая в основном аналогична функции camera.setPosition (...). Я предполагаю, что это происходит потому, что это уменьшает количество создаваемых «новых» векторов и сохраняет один вызов метода, что может повлиять на мобильные устройства. – noone