Я работаю над игрой в гольф в единстве, где у меня есть камера, вращающая мяч по орбите на основе ввода мыши x и y. Код контроллера камеры работает нормально, пока я не начинаю прикладывать силу к мячу. См. Код контроллера камеры ниже:
void ControlCamera()
{
// Do Nothing if Locked
if (cameraLocked)
return;
// Handle Zoom
myCamera.transform.position = Vector3.MoveTowards(myCamera.transform.position, transform.position, Input.mouseScrollDelta.y);
// Handle Y Transformation
Transform yTransform = myCamera.transform;
yTransform.RotateAround(transform.position, Vector3.left, Input.GetAxis("Mouse Y") * cameraSensitivity);
if (yTransform.rotation.eulerAngles.x < maxXRot && yTransform.rotation.eulerAngles.x > minXRot)
{
myCamera.transform.rotation = yTransform.rotation;
myCamera.transform.position = yTransform.position;
}
// Handle X Transformation
myCamera.transform.RotateAround(transform.position, Vector3.down, Input.GetAxis("Mouse X") * cameraSensitivity);
// Prevent Z Skew
Quaternion currentRotation = myCamera.transform.rotation;
float xRot = currentRotation.eulerAngles.x;
float yRot = currentRotation.eulerAngles.y;
currentRotation.eulerAngles = new Vector3(xRot, yRot, 0);
myCamera.transform.rotation = currentRotation;
}
Объект камеры является дочерним по отношению к объекту шара и катится вместе с мячом при приложении силы. Я попытался отделить объект камеры от объекта шара, который разбивает объект камеры (он больше не следует за мячом, потому что это больше не ребенок).
Есть идеи, как я могу сохранить этот код красивым и простым, как он есть сейчас, и предотвратить перекатывание камеры, продолжая следить за мячом?