unity3d 镜像翻转画面脚本

来源:互联网 发布:株洲网络买花花店 编辑:程序博客网 时间:2024/06/07 17:41

做项目镜子屏幕需要左右翻转画面

直接挂摄像机上勾选一下即可(注意只反场景里的 不包括ui)

  using UnityEngine;     [RequireComponent(typeof(Camera))]     [ExecuteInEditMode]     public class MirrorFlipCamera : MonoBehaviour {         new Camera camera;         public bool flipHorizontal;         void Awake () {             camera = GetComponent<Camera>();         }         void OnPreCull() {             camera.ResetWorldToCameraMatrix();             camera.ResetProjectionMatrix();             Vector3 scale = new Vector3(flipHorizontal ? -1 : 1, 1, 1);             camera.projectionMatrix = camera.projectionMatrix * Matrix4x4.Scale(scale);         }         void OnPreRender () {             GL.invertCulling = flipHorizontal;         }                  void OnPostRender () {             GL.invertCulling = false;         }     }

直接使用

Matrix4x4 mat = camera.projectionMatrix;  
mat *= Matrix4x4.Scale(new Vector3(-1, 1, 1));  
camera.projectionMatrix = mat;

会造成镜像里画面出现问题

因为没有重置矩阵,摄像机画面不一定是正对着的

主要代码摘自

http://answers.unity3d.com/questions/20337/flipmirror-camera.html

原创粉丝点击