Я делаю простой движок 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;
}