2d поворот камеры (javascript) - PullRequest
0 голосов
/ 05 марта 2020

Я делаю простой движок 2d javascript на основе графа сцены (все игровые объекты являются контейнерами / узлами, а их дети живут в координатном пространстве своего родителя).

Моя реализация камеры работает путем настройки создайте камеру в качестве root контейнера для игровых объектов и настройте ее так, чтобы она следовала за дочерним элементом 'player'. Без поворота это работает нормально - я просто устанавливаю отрицательное положение камеры относительно цели:

this.x = -target.pos.x, this.y = -this.target.pos.y

Но когда я пытаюсь следовать той же логике c для поворота (this.rotation = -this.target.rotation) это не удается - игрок вскоре выходит из поля зрения.

Чтобы уточнить - результат, которого я пытаюсь достичь, состоит в том, чтобы заставить сцену вращаться вокруг игрока, когда он поворачивается (вид сверху), оставляя игрока всегда в одном направлении.

Любые предложения приветствуются!

.. edit:

как это выглядит без вращения: https://gfycat.com/graveforsakencow с вращением https://gfycat.com/cheaptimelyboar

метод обновления камеры:


        if (!this.rotation_mode) 
            this.follow();
        else 
            this.followAndRotate(); 

    }

    follow() {
        this.pos.x = -this.target.pos.x;
        this.pos.y = -this.target.pos.y;

        this.pos.x += this.offset_x; //center target on screen
        this.pos.y += this.offset_y;
    }

    followAndRotate() {
        this.rotation = -this.target.rotation;
        this.pos.x = -this.target.pos.x;
        this.pos.y = -this.target.pos.y;

        this.pos.x += this.offset_x; //center target on screen
        this.pos.y += this.offset_y; 

    }
...