赞
踩
在使用Unity自制第一人称小游戏,发现场景运行时,镜头中的物体一直在抖动,于是开始找问题所在
在例子过程中用Capsule临时代替下玩家 用来观察地形制作效果
发现Capsule在走动,离开原地后,面前的画面开始出现抖动,并且离其他模型越近闪烁愈加明显。
在检查模型、地形等的Transform面板后发现 是相机的问题
检查了下代码 认为只有可能是Camera的角度控制处有错
最后发现是 Camera因为要和Capsule的角度同向,应该先让Camera的Rotation.y和Capsule相同,然后再让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);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。