以下可以实现镜头翻转的功能,但是面片部分也会被翻转.
Camera camera = Camera.main;
Matrix4x4 mat = camera.projectionMatrix;
mat *= Matrix4x4.Scale(new UnityEngine.Vector3(-1, 1, 1));
camera.projectionMatrix = mat;
加入以下判定可解决这个问题
public static void MirrorFlipCamera(bool isMirror)
{
if (isMirror != GL.invertCulling)
{
Camera camera = Camera.main;
Matrix4x4 mat = camera.projectionMatrix;
mat *= Matrix4x4.Scale(new UnityEngine.Vector3(-1, 1, 1));
camera.projectionMatrix = mat;
GL.invertCulling = isMirror;
}
}
2023年9月6日补充
当GL.invertCulling为true时关闭游戏,会导致重新进入游戏时,虽然GL.invertCulling的值为false,但是渲染效果却是翻转的
需要重新设置一下GL.invertCulling为false才可使渲染恢复
public static void OnGameStart()
{
GL.invertCulling = false;
}