Я сделал простую гоночную игру. Камера следует за автомобилем (игроком), и ее положение и поворот основаны на повороте Y автомобиля. Я хочу сгладить поворот камеры, но когда она пересекает точку 0 градусов, она поворачивается на 360 градусов.
Вот код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Camera : MonoBehaviour {
public Transform camera, player;
void Update() {
Vector3 cameraPosition = camera.transform.position;
float cameraRotation = camera.eulerAngles.y;
float playerRotation = player.eulerAngles.y;
Vector3 playerPosition = player.transform.position;
cameraPosition.x = (Mathf.Sin((playerRotation / 180) * Mathf.PI) * -6 + player.position.x);
cameraPosition.y = playerPosition.y + 2.5f;
cameraPosition.z = (Mathf.Cos((playerRotation / 180) * Mathf.PI) * -6 + player.position.z);
camera.transform.position = cameraPosition;
cameraRotation = cameraRotation + (playerRotation-cameraRotation)/2;
camera.localRotation = Quaternion.Euler(20f, cameraRotation, 0f);
}
}
Я понял, что это вращение вызвано скриптом сглаживания:
cameraRotation = cameraRotation + (playerRotation-cameraRotation)/2;
Как предотвратить это нежелательное вращение?