unity相机不跟随球体的转动而转动的代码
时间: 2024-02-03 20:14:07 浏览: 127
可以在相机上添加一个脚本,然后在脚本中将相机的旋转设置为固定的值,不跟随球体的旋转。以下是一个示例代码:
```
public class CameraController : MonoBehaviour {
public Transform target; // 目标球体
public float distance = 10.0f; // 相机与目标球体的距离
public float height = 5.0f; // 相机距离目标球体的高度
public float rotationDamping = 3.0f; // 相机旋转的阻尼
void LateUpdate () {
if (!target) {
return;
}
// 计算相机的位置
float wantedRotationAngle = target.eulerAngles.y;
float wantedHeight = target.position.y + height;
float currentRotationAngle = transform.eulerAngles.y;
float currentHeight = transform.position.y;
currentRotationAngle = Mathf.LerpAngle(currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime);
currentHeight = Mathf.Lerp(currentHeight, wantedHeight, rotationDamping * Time.deltaTime);
Quaternion currentRotation = Quaternion.Euler(0, currentRotationAngle, 0);
Vector3 pos = target.position - currentRotation * Vector3.forward * distance;
// 设置相机的位置和旋转
transform.position = new Vector3(pos.x, currentHeight, pos.z);
transform.rotation = currentRotation;
}
}
```
在上述代码中,我们首先获取目标球体的位置和旋转角度,然后计算相机应该在什么位置和角度,最后设置相机的位置和旋转即可。这样相机就不会跟随球体旋转了。
阅读全文