当前位置: 代码迷 >> 综合 >> CustomPlugins:GameCamera
  详细解决方案

CustomPlugins:GameCamera

热度:66   发布时间:2023-11-24 00:57:10.0

这个是模拟编辑器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的操作无效。

 

 当项目有远程线程调试时,使用向日葵等远程工具时,虚拟轴的鼠标检测不到,可以调整到视口拖拽项。

 

 设置项目的目标渲染帧率值。

 

 摄像机视角初始状态设定。

其他代码交代:

摄像机的环绕点。