Я создаю игру с Unity и у меня математическая проблема.
У меня есть сфера с радиусом 10 и центром (0, 0, 0).
Я хочу, чтобы камера двигалась вокруг этой сферы, но я нигде не могу найти способ сделать то, что я хочу.
Я перемещаю камеру по оси X и оси Y (и, следовательно, получаю точку вне сферы), и я хочу установить ее ось Z, чтобы камера вернулась на сферу, я использую это уравнение: r ^ 2 = x ^ 2 + y ^ 2 + z ^ 2 => z ^ 2 = r ^ 2 - x ^ 2 - y ^ 2
Но это не работает ... Пожалуйста, помогите мне
EDIT
Это мой код (в c #):
private void OnMouseDrag()
{
var newX = mainCameraTransform.position.x + Input.GetAxis("Mouse X");
var newY = mainCameraTransform.position.y + Input.GetAxis("Mouse Y");
var maxDistance = 10.0f;
newX = Mathf.Clamp(newX, -maxDistance * 0.85f, maxDistance * 0.85f);
newY = Mathf.Clamp(newY, 1.0f * 0.85f, maxDistance * 0.85f);
var newZ = Mathf.Sqrt(Mathf.Abs(maxDistance * maxDistance - newX * newX - newY * newY));
mainCameraTransform.position = new Vector3(newX, newY, newZ);
mainCameraTransform.LookAt(Vector3.zero);
}
Как видите, я использовал Clamp, чтобы держать X и Y меньше радиуса, но это не помогло ...