Unity 3D中Camera相机抖动的一种原因

Unity 3D中Camera相机抖动的一种原因


前言

在使用Unity自制第一人称小游戏,发现场景运行时,镜头中的物体一直在抖动,于是开始找问题所在


发现问题

在例子过程中用Capsule临时代替下玩家 用来观察地形制作效果

发现Capsule在走动,离开原地后,面前的画面开始出现抖动,并且离其他模型越近闪烁愈加明显。
在检查模型、地形等的Transform面板后发现 是相机的问题
当时发现的原因

解决问题

检查了下代码 认为只有可能是Camera的角度控制处有错
检查代码
最后发现是 Camera因为要和Capsule的角度同向,应该先让Camera的Rotation.y和Capsule相同,然后再让Camera朝向鼠标的坐标

否则每帧运行时先朝向鼠标再和“身体”同步就会让视野抖动
所以只要将红框内的代码,上下调换下顺序即可

Camera的控制代码如下

    var MouseX = Input.GetAxis("Mouse X");
    var MouseY = Input.GetAxis("Mouse Y");  //获得鼠标坐标

    CameraRotation.y += MouseX * MouseSensitivity;  //通过鼠标X轴坐标变化 转动摄像机的Y轴 实现转‘头’
    CameraRotation.x -= MouseY * MouseSensitivity;  //通过鼠标Y轴坐标变化 转动摄像机的X轴 实现抬‘头’,低‘头’
    CameraRotation.x = Mathf.Clamp(CameraRotation.x, AngleLimit.x, AngleLimit.y);   //限制摄像机X轴转动的仰角,最大为AngleLimit.x,最小AngleLimit.y,需要AngleLimit(x,y)
    
    ViewerTransform.rotation = Quaternion.Euler(x: 0, CameraRotation.y, z: 0);                 //观察者的transform角度转向相机的角度 转动Y轴
    CameraTransform.rotation = Quaternion.Euler(CameraRotation.x, CameraRotation.y, z: 0);

猜你喜欢

转载自blog.csdn.net/Tingo_L/article/details/116711724
今日推荐