unity摄像机控制篇
来源:互联网 发布:影像测量软件 编辑:程序博客网 时间:2024/05/01 15:01
关于unity中摄像机控制,我总结了一些,希望自己在今后的学习中不会忘记,耶!!!
unity中第一,三人称控制器上绑定的都有一个叫Mouse Look的脚本,我把它写下来了;
[AddComponentMenu("Camera-Control/Mouse Look")]public enum RotationAxes{MouseXAndY=0,MouseX=1,MouseY=2}public RotationAxes axes=RotationAxes.MouseXAndY;public float SensitivityX=15F;public float SensitivityY=15F;public float minimumX=-360F;public float maxmumX=360F;public float minimumY=-60F;public float maxmumY=60F;float rotationY=0F;void start(){ if(GetComponent<Rigidbody>()) { GetComponent<Rigidbody>().freezeRotation=true; }}void update(){ if(axes==RotationAxes.MouseXAndY) { float rotationX=transform.localEulerAngles.y+Input.GetAxis("Mouse X")*SensitivityX; rotationY+=Input.GetAxis("MouseY")*SensitivityY; rotationY=Mathf.Clamp(rotationY,minimumY,maxmumY); transform.localEulerAngles=new Vector3(-rotationY,rotationX,0); } else if(axes==RotationAxes.MouseX) { transform.Rotate(0,Input.GetAxis("Mouse X")*SensitivityX,0); } else { rotationY+=Input.GetAxis("Mouse Y")*SensitivityY; rotationY=Mathf.Clamp(rotationY,minimumY,maxmumY); transform.localEulerAngles=new Vector3(-rotationY,transform.localEulerAngles.y,0); }}
主角面向鼠标点击的方向:
Vector3 m_pos=Input.mousePosition; //获取鼠标的屏幕坐标; Vector3 p_pos=Camera.main.WorldToScreenPoint(transform.position); //将主角的世界坐标转化为屏幕坐标,为的是获得他的z轴坐标; m_pos.z=p_pos.z; //将主角的屏幕z轴坐标赋值给鼠标; Vector3 wolrd; wolrd.x=Camera.main.ScreenToWorldPoint(m_pos).x; world.z=Camera.main.ScreenToWorldPoint(m_pos).z; world.y=transform.position.y //y轴坐标不变,主角才不会转进地底; transform.LookAt(world); //主角看向鼠标点击的位置;
摄像机围绕物体旋转:
x += Input.GetAxis("Mouse X") * speed*Time.deltaTime; y += Input.GetAxis("Mouse Y") * speed*Time.deltaTime; y = Mathf.Clamp(y,0,180); //x,z轴的旋转限制在0到180; Quaternion q = Quaternion.Euler(y, x, 0); Vector3 direction = q * Vector3.forward; this.transform.position = center.position - direction * distance; this.transform.LookAt(center.position);
滑动鼠标中建,调整视野的远近:
float fov=Camera.main.FieldOfView; //获得摄像机调整视野的值; fov+=Input.GetAxis("Mouse ScrollWheel")*sensitivity; //滑动中建,调整视野值得大小; fov=Mathf.Clamp(fov,minFov,maxFov); //限制视野值得大小为(minFov,maxFov); Camera.main.FieldOfView=fov; //再将调整好的值赋值给摄像机的视野;
写的不好,勿喷哦!!
本文出自 “51CTO_King” 博客,请务必保留此出处http://cjboking.blog.51cto.com/11020113/1784756
1 0
- unity摄像机控制篇
- Unity摄像机控制
- unity重力感应控制摄像机旋转
- unity 控制摄像机旋转和缩放
- Unity 控制摄像机跟随运动物体
- unity 鼠标控制摄像机围绕物体旋转
- unity控制摄像机视图大小的算法
- unity 如何控制摄像机跟随角色移动
- Unity 控制摄像机跟随运动物体
- unity简单自由漫游摄像机控制脚本
- Unity 控制摄像机旋转、放大、缩小
- Unity摄像机
- Unity 摄像机
- unity 摄像机
- Unity用鼠标滑轮控制摄像机缩放画面
- Unity 2D战棋类 摄像机的局部移动控制
- unity中实现的第三人称摄像机控制脚本。
- Unity代码笔记<1>人物动作按键绑定+摄像机控制
- webstorm跑索引卡顿的问题
- unity中射线碰撞检测总结
- unity中自定义鼠标样式
- 利用OnAnimatorove函数控制人物的移动
- 广度优先搜索
- unity摄像机控制篇
- Android开发一些共通方法的整理
- C++中Map的基本用法
- 阿里巴巴2017实习生笔试题(二)
- poj 1265(网格)
- Android应用开发试题(收集)
- [2016/8/2][暑假集训]数论基础
- HTML特殊字符编码大全
- 2016夏季练习——排序(AI)