Вот как можно реализовать движение шара относительно поворота камеры в Unity с помощью Cinemachine FreeLook:
## Получение поворота камеры
1. Получите ссылку на камеру Cinemachine FreeLook в скрипте шара:
```csharp
public CinemachineFreeLook cameraRig;
```
2. В методе Update() получайте поворот камеры:
```csharp
Vector3 cameraForward = cameraRig.transform.forward;
cameraForward.y = 0; // игнорируем вертикальный поворот
cameraForward.Normalize();
```
## Применение движения шара
1. В методе FixedUpdate() (для физики) применяйте силу в направлении поворота камеры:
```csharp
Vector3 forceDirection = cameraForward;
rb.AddForce(forceDirection * forceAmount, ForceMode.Force);
```
где `rb` - ссылка на Rigidbody шара, а `forceAmount` - сила движения.
2. Чтобы шар двигался только вперед относительно камеры, поворачивайте направление силы на угол поворота камеры вокруг вертикальной оси:
```csharp
Quaternion cameraYRotation = Quaternion.Euler(0, cameraRig.transform.eulerAngles.y, 0);
forceDirection = cameraYRotation * Vector3.forward;
```
Полный код может выглядеть так:
```csharp
public class BallController : MonoBehaviour
{
public CinemachineFreeLook cameraRig;
public Rigidbody rb;
public float forceAmount = 10f;
void FixedUpdate()
{
Vector3 cameraForward = cameraRig.transform.forward;
cameraForward.y = 0;
cameraForward.Normalize();
Quaternion cameraYRotation = Quaternion.Euler(0, cameraRig.transform.eulerAngles.y, 0);
Vector3 forceDirection = cameraYRotation * Vector3.forward;
rb.AddForce(forceDirection * forceAmount, ForceMode.Force);
}
}
```
Теперь шар будет двигаться вперед относительно поворота камеры Cinemachine FreeLook. Вы можете настроить силу движения через переменную `forceAmount`.
Ключевые моменты:
- Получаем направление взгляда камеры, игнорируя вертикальный поворот
- Поворачиваем направление силы на угол поворота камеры вокруг вертикальной оси
- Применяем силу в полученном направлении к Rigidbody шара в методе FixedUpdate()
[1]
https://forum.unity.com/threads/moving-and-rotating-camera-around-the-ball.505015/ [2]
https://www.youtube.com/watch?v=FsYI9D3aukY [3]
https://discussions.unity.com/t/how-to-make-the-camera-follow-and-face-a-rolling-object/248504 [4]
https://stackoverflow.com/questions/62093586/having-a-camera-follow-a-ball-in-unity-without-having-the-camera-roll [5]
https://www.youtube.com/watch?v=fESM_UIg1rA