开发者日志02 窗口移动,鼠标和crt效果实现

10/22133 浏览综合
这里主要阐述一些技术上的实现思路。
窗口移动首先不能干扰游戏内物理变化,因此我们需要使用投影摄像机和RenderTexture来将游戏界面投影到一个平面上,从而将窗口变化和游戏内场景分隔。
在此基础上,只需要写一个鼠标拖动窗口移动的简单脚本即可实现对窗口的操控。(通过自动吸附保证像素精确,否则画面在非整数格会变模糊)
鼠标操控核心原理就是屏幕坐标和世界坐标的转化。由于摄像机使用了PixelPerfectCamera组件实现像素精确,所以屏幕坐标与真实屏幕坐标仍有区别,需要获取该组件才能真正实现屏幕坐标到世界坐标的对齐。虚拟鼠标的实现是将鼠标与玩家操作分离的重要逻辑,未来如果需要实现任何鼠标相关的功能都可以从这个地方延申。
当前版本URP renderer2D与PixelPerfectCamera叠加的后处理实现方法比较抽象,我并没有研究明白,在近一个通宵的尝试无果后,我决定同样使用投影相机的方法,绕过后处理麻烦的部分。为了不干扰已经完成部分的正常运行,我选择将新投影画布覆盖在原主相机的z轴后侧,将原主相机的改为投影相机,投影在新投影画布上,在原位置的z轴后侧添加新主相机。这种方法既使得crt效果可以仅渲染在投影画布-上,避免与其它组件冲突,也可以使鼠标与摄像机的屏幕坐标位置不会发生改变,防止滑块,拖动等功能失效。在比赛上,这可能会为大家省下很多临时学习的时间成本,使用简陋的方法和较短的时间实现不错的效果。
TapTap
12
3
3