为什么在Unity3D中相机会绕z轴旋转?我在Unity3D中有一个主摄像头,我想根据鼠标输入旋转它,所以它可以作为第一人称视频游戏,根据你想看的地方移动鼠标。相机的起始值(UnityInspector选项卡中的Transform选项卡)为:Position:X=-1,Y=1,Z=-11。旋转:X=0,Y=0,Z=0。比例尺:X=1,Y=1,Z=1。我为主摄像头添加了一个脚本组件。就是下面这个类:usingUnityEngine;使用系统集合;公共类CameraMove:MonoBehaviour{floatdeltaRotation=50f;//用它来初始化voidStart(){}//Update每帧调用一次voidUpdate(){if(Input.GetAxis("MouseX")0){//鼠标右移动作的代码转换。旋转(newVector3(0f,deltaRotation,0f)*Time.deltaTime);}if(Input.GetAxis("MouseY")0){//鼠标右移动作代码transform.Rotate(newVector3(-deltaRotation,0f,0f)*Time.deltaTime);但是当我播放场景时,相机并没有像它应该的那样旋转。旋转值在x轴、y轴甚至z轴上都不同。我究竟做错了什么?这是Quaternion如何计算的问题。修改多个轴时会发生这种情况。如果您注释所有x旋转或y旋转,并且一次只在一个轴上旋转,您将意识到这个问题将会消失。要使用鼠标输入正确旋转相机,请使用eulerAngles或localEulerAngles变量。在两者之间做出选择取决于你在做什么。以上是C#学习教程:为什么Unity3D中相机会绕z轴旋转?分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——publicfloatxMoveThreshold=1000.0f;公共浮动yMoveThreshold=1000.0f;公共浮动yMaxLimit=45.0f;公共浮动yMinLimit=-45.0f;浮动yRotCounter=0.0f;浮动xRotCounter=0.0f;//Update每帧调用一次voidUpdate(){xRotCounter+=Input.GetAxis("MouseX")*xMoveThreshold*Time.deltaTime;yRotCounter+=Input.GetAxis("鼠标Y")*yMoveThreshold*Time.deltaTime;yRotCounter=Mathf.Clamp(yRotCounter,yMinLimit,yMaxLimit);transform.localEulerAngles=newVector3(-yRotCounter,xRotCounter,0);}收藏不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
