В настоящее время у меня есть игра, в которой есть карта 480x3200, и человек, падающий с вершины. Камера следует за человеком, и есть платформы, когда человек падает. Платформы должны быть осязаемыми, поэтому я могу вращать и перемещать их во время игры, поэтому я сделал это Image, когда он изначально был просто спрайтом.libGDX движущаяся камера и изображение
Когда я изменил его с спрайта на изображение, все сработало хорошо, за исключением случаев, когда человек падает (камера начинает двигаться вниз и следует за человеком), платформа также перемещается вместе с камерой, поэтому похоже, что это также падение. Платформа должна просто оставаться в одном месте и не перемещаться с камерой, так как камера продолжает двигаться вниз, платформа в конечном итоге исчезнет из виду.
Настройка платформы и добавить его на сцену
@Override
public void show() {
...
platform = new Image(new Texture(Gdx.files.internal("img_platform.png")));
platform.setX(2);
platform.setY(110);
platform.setOrigin(platform.getWidth()/2, platform.getHeight()/2);
@Override
public void render(float delta) {
....
stage.addActor(platform);
}
Я посмотрел вокруг API, и не может определить, нужно ли камера, сцена, или изображение, чтобы изменить, или что-то другое о котором я не думал. Есть идеи?
Edit:
public WorldRenderer(FallDown game, SpriteBatch batch, World w) {
this.cam = new OrthographicCamera(CAMERA_WIDTH, CAMERA_HEIGHT);
this.cam.position.set(CAMERA_WIDTH/2, CAMERA_HEIGHT/2, 0);
this.cam.setToOrtho(false, CAMERA_WIDTH, CAMERA_HEIGHT);
cam.position.set(CAMERA_WIDTH/2, 105, 0);
stage = new Stage(480, 800, true);
platformTexture = new Image(new Texture(Gdx.files.internal("img_platform.png")));
platformTexture.setX(2);
platformTexture.setY(100);
platformTexture.setOrigin(platformTexture.getWidth()/2, platformTexture.getHeight()/2);
...
}
public void render(float delta) {
stage.addActor(platformTexture);
moveCamera();
...
}
private void moveCamera() {
if (Person.getPosition().y < cam.position.y)
cam.position.y = Person.getPosition().y;
cam.update();
}
...
Переместите stage.addActor (platform) в метод show(). В настоящее время вы повторно добавляете актера на сцену каждый цикл рендеринга. – Aert
@Aert Я добавил stage.addActor (platform), чтобы показать(), и это дает мне исключение NullPointerException. Но я не думаю, что добавление в show() будет работать в моем случае, потому что мне также требуется обнаружение конфликтов на платформе – Jon