这个是模拟编辑器Scene视口的相机控制脚本,在这个基础之上附加了一些额外的功能来完成一个相机控制工具。
交互控制按键
扩展项和事件监听
从上面可以看出这是一个功能很多的脚本,没有关系,我们一一进行讲解。
GameCamera不但是一个单例,而且必须添加给摄像机身上。
功能1:点选(鼠标左键单击)
?编辑器时原生操作,?GameCamera运行时操作
可以看出和原生的点选还是有区别的:1.没有高亮轮廓线;2.没有坐标轴,另外还需要注意的是GameCamera的点选是通过射线和过滤层进行判断的,所以需要进行相对应的设置:
要启用点选的功能。
选择对象的过滤层,默认和摄像机保持一致的。
另外点选对象身上必有碰撞体。
选择和取消选择在事件监听中可以获取。
相对应的代码部分:
功能2:环绕观察(Alt+鼠标左键拖动)
?编辑器时原生操作,?GameCamera运行时操作
相对应的设置:
是否启用环绕观察功能。
如果不启用副键,环绕观察就不再受Alt键约束了。
环绕观察的旋转速度和角度设定。
摄像机运动的平滑设定。
相对应的代码部分:
功能3:特写选中物体(具有选中对象按F按键)
?编辑器时原生操作,?GameCamera运行时操作
相对应的设置:
是否启用特写显示能力。
功能按键设置,默认F按键。
物体大小占屏幕比例。
摄像机移动速度。
平滑设定。
相对应的代码部分:
功能4:注视(鼠标中键单击)
?编辑器时原生操作,?GameCamera运行时操作
相对应的设置:
是否启用注视功能。
这个功能的实现也是通过射线进行检测的,所以也要保证选择层和物体身上有碰撞体。
对应的移动实现也受速度和平滑的影响。
相对应的代码部分:
功能5:视口平移(鼠标中键拖动)
?编辑器时原生操作,?GameCamera运行时操作
相对应的设置:
是否启用视口平移功能。
平移速度。
移动的平滑设定。
位移的位置轴冻结,轴参照初始时环绕点的位置。
相对应的代码部分:
功能6:拉近拉远的聚焦(鼠标中键前后滚动)
?编辑器时原生操作,?GameCamera运行时操作
相对应的设置:
是否启用聚焦拉动能力。
聚焦的速度和距离范围。
聚焦操作的平滑设置。
距离变化的事件监听:
OnZoomDisChange:距离变化监听 [最近距离,最远距离]
OnZoomDisRatio: 距离比率变化监听 [0,1]
相对应的代码部分:
功能7:右键缩放(Alt+鼠标右键拖动)
?编辑器时原生操作,?GameCamera运行时操作
相对应的设置:
是否启用右键缩放。
如果这个副键禁用了,那这个功能就取消了。
个人觉得这个功能不太常用,所以没有做太多的参数调整。
相对应的代码部分:
功能8:摄像机旋转(鼠标右键拖动)
?编辑器时原生操作,?GameCamera运行时操作
相对应的设置:
是否启用右键旋转能力。
旋转的速度。
相对应的代码部分:
功能9:漫游(鼠标右键+W\S\A\D\Q\E)
?编辑器时原生操作,?GameCamera运行时操作
相对应的设置:
是否启用漫游能力。
按键指定。
漫游速度基数。
鼠标右键+鼠标滚轮键进行调整:
相对应的代码部分:
其他设定项:
如果检查UI层,则鼠标在UI对象上时对GameCamera的操作无效。
当项目有远程线程调试时,使用向日葵等远程工具时,虚拟轴的鼠标检测不到,可以调整到视口拖拽项。
设置项目的目标渲染帧率值。
摄像机视角初始状态设定。
其他代码交代:
摄像机的环绕点。