У меня есть камера, которая вращается вокруг земного шара. Находясь на орбите земного шара, пользователь может щелкнуть другие объекты, что приведет к тому, что камера будет вращаться вокруг этого объекта. Итак, с самого начала это выглядит так:
![enter image description here](https://i.stack.imgur.com/OnDm1.png)
После нажатия на объект камера переместится, чтобы сфокусироваться на нем, но останется в любом местеповорот был заранее, например, так:
![enter image description here](https://i.stack.imgur.com/cab9d.png)
Тем не менее, я хотел бы, чтобы камера ориентировалась на то, чтобы глобус всегда был нанижняя часть кадра, как будто она смотрит вдоль касательной плоскости (думаю?). Примерно так.
![enter image description here](https://i.stack.imgur.com/SPJ8h.png)
И то, что видит игрок, сродни этому.
![enter image description here](https://i.stack.imgur.com/FbVBf.png)
Я приношу извинения за свои художественные способности.
Я зашел в документацию Unity и обнаружил Вычисление нормального перпендикулярного вектора , что, как мне кажется, тесно связано с проблемой, с которой я столкнулся. У меня есть.
Вот так выглядит мой код прямо сейчас:
Vector3 a = target.position;
Vector3 b = earth.transform.position;
Vector3 c = north.transform.position;
Vector3 side1 = b - a;
Vector3 side2 = c - a;
Vector3 tangent = Vector3.Cross(side1, side2);
transform.LookAt(tangent);
"цель" - это астероид или любой объект, вокруг которого вращается камера. «земля» - это глобус, а «север» - игровой объект с центром на Северном полюсе. Этот скрипт прикреплен к камере. Прямо сейчас это просто заставляет камеру ориентироваться различными способами, для которых я не могу точно определить шаблон.