我做了一个简单的赛车游戏。摄像机跟随汽车(玩家),其位置和旋转基于汽车的 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;
如何防止这种不必要的旋转?