怎样用鼠标控制摄像机的移动旋转

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样用鼠标控制摄像机的移动旋转相关的知识,希望对你有一定的参考价值。

参考技术A 打开unity3d创建一个立方体作为要控制的人物。
unity3d第一人称移动,鼠标旋转控制视角

给立方体添加rigidbody,并且把“Freeze Rotation”的xyz都勾选,冻结旋转。
unity3d第一人称移动,鼠标旋转控制视角

创建一个”First“脚本。
unity3d第一人称移动,鼠标旋转控制视角

打开First脚本,创建三个变量,在Start中初始化相机的位置。

camTrans = Camera.main.transform;

Vector3 startPos = transform.position;

startPos.y += camHeight;

camTrans.position = startPos;

camTrans.rotation = transform.rotation;

camAng = camTrans.eulerAngles;
unity3d第一人称移动,鼠标旋转控制视角

新建一个Rot_move方法,在里面设置相机跟随鼠标旋转、物体与相机同步旋转、更新相机位置。

float y = Input.GetAxis("Mouse X");

float x = Input.GetAxis("Mouse Y");

camAng.x -= x;

camAng.y += y;

camTrans.eulerAngles = camAng;

camTrans.position = new Vector3(this.transform.position.x,camTrans.position.y,this.transform.position.z);

float camy=camAng.y;

this.transform.eulerAngles=new Vector3(this.transform.eulerAngles.x,camy,this.transform.eulerAngles.z);

Vector3 startPos = transform.position;

startPos.y += camHeight;

camTrans.position = startPos;
unity3d第一人称移动,鼠标旋转控制视角

在update方法中调用Rot_move方法,以及监听W键向前移动。
unity3d第一人称移动,鼠标旋转控制视角

把First脚本放在立方体上面。
unity3d第一人称移动,鼠标旋转控制视角

运行游戏,现在我们就可以按住W按键向前移动,鼠标控制移动方向。
unity3d第一人称移动,鼠标旋转控制视角追问

我项目的需求是只控制摄像机移动和旋转:鼠标左键控制摄像机的一移动:上下滑动控制摄像机的前后移动,左右滑动控制摄像机的左右移动,鼠标右键控制摄像机围绕某个点旋转,旋转是围绕y轴和z轴旋转的,,旋转后,在移动摄像机方向就不对了,摄像机移动是按世界坐标移动的,假如不按世界坐标移动,摄像机视口朝下会往下移动,需求是在水平面上前后移动摄像机.我知道是旋转后,坐标转换变了

以上是关于怎样用鼠标控制摄像机的移动旋转的主要内容,如果未能解决你的问题,请参考以下文章

你好,请问在UNITY3D中如何实现用鼠标左键拖拽控制一个组合物体的旋转啊?

OpenGL入门07.实现摄像机的旋转和移动

OpenGL入门07.实现摄像机的旋转和移动

Unity实现人物移动和镜头跟随

unity3d中,怎样让鼠标点击一个物体后,摄像机就去拍摄这个物体?

一个摄像机控制类的总结