Skip to content

关于地图活动镜头

相关插件

基于核心:

◆Drill_CoreOfBallistics 数学模型 - 弹道核心

◆Drill_CoreOfInput 系统 - 输入设备核心

插件本体:

◆Drill_LayerCamera 地图 - 活动地图镜头

大部分镜头的控制方法,插件信息和插件示例 里面都有说明。

名词索引

以下你可以按住ctrl键点击下面的词,可以直接定位到想了解的名词:

地图活动镜头地图镜头 图层与镜头 镜头架
镜头模式自动模式 观光模式 固定看向
叠加变化旋转 缩放 翻转
高级功能镜头墙 镜头墙摆放说明 视野触发

插件关系

地图镜头的插件关系如下。镜头与其他插件都可以断开,属于被扩展关系。

(地图相关插件需要主动适配 活动镜头 ,由于数量很多,这里只列举部分)

地图活动镜头

定义

1)地图镜头

地图镜头: 指只作用于地图界面的镜头,你能对镜头进行各项操作。

镜头的最底层可控制 平移、缩放、旋转 这三个属性。

随着功能的不同,被划分成了镜头架、镜头模式、叠加变化等各项功能。

2)基本功能

你可以控制 开启/关闭/暂停/继续 镜头。

3)示例位置

示例中的 地图管理层 有镜头的相关属性介绍。

也对应连接到体积管理层、地图UI管理层。

图层与镜头

1)debug功能

在插件中,勾选debug参数即可开启测试内容。

开启debug功能后,可以看到 白、橙、黄、红、蓝 五种线圈,用于对齐位置。

白:地图界面的下层贴图。

橙:地图界面的中层贴图。

黄:地图界面的上层贴图。

红:地图界面的图片层贴图。

蓝:地图界面的最顶层贴图。

白矩形 表示镜头架的初始位置;

五矩形 表示静止的五个方块,发生变换时一定会错位。(比对用)

四个边角 用于对齐镜头的 平移、缩放、旋转 情况;

圆圈 用于对齐鼠标落在镜头外图层的位置;

十字 用于对齐鼠标的真实位置;

如果某一层颜色的贴图在你的游戏中发生了不合理的偏移,可以及时告诉作者我。

(对齐是个大问题,作者我反复修改调整镜头插件,整理了大量数学变换公式,终于能在大部分情况下对齐了。)

2)镜头控制的图层

在地图界面中,镜头控制 地图远景至上层 之间的所有图层。

镜头架

1)非循环地图 的镜头架

地图大小 就是 镜头架的大小。

在一般的地图中,镜头只能在限定的地图图块内进行移动。

如果地图比镜头还小,那么将会看见黑边:

2)循环地图 的镜头架

循环地图中,镜头架的边缘是开放的。

超过了镜头架的顶部,镜头将会从底部出来。(蓝色部分为循环的地图)

镜头模式

镜头模式: 即镜头移动的模式,分为自动模式和观光模式两种。

自动模式

1)定义

自动模式: 即 镜头始终移动并聚焦于玩家 的镜头模式。

玩家移动到哪,镜头跟随到哪。

自动模式下,可以切换匀速移动、弹性移动。

(下图的白框为镜头初始位置)

2)聪明的镜头

聪明的镜头:若地图为循环结构,则镜头会选择循环中与目标的最短距离,来进行移动。

聪明的镜头会选择最短路径移动,但当 镜头墙 挡住镜头时,聪明的镜头可能会反方向移动,通过循环到达镜头墙的另一面,而不是直接穿过镜头墙。见:镜头墙摆放说明

3)聚焦偏移

聚焦偏移是指在 自动模式下,镜头看向玩家的中心点,额外偏移的位置量。

此功能与 固定看向 有点相似,

如果你想要看向某个事件,而不是从玩家的中心点进行聚焦偏移,那么使用固定看向指令即可。

观光模式

1)定义

观光模式: 即通过 鼠标或键盘 自由移动镜头的镜头模式。

将 鼠标接触窗体边缘 或者 键盘上下左右控制 移动镜头。

(键盘移动玩家 与 键盘移动镜头 功能相互排斥,配置时注意只开一个)

此模式类似于RTS即时战略类游戏的镜头操控。

2)控制台插件

地图界面中,附带了 控制台 插件:

Drill_LayerCameraConsole 地图UI - 活动地图镜头控制台

插件能够实现 鼠标移动镜头时 的箭头贴图效果。

3)定位按钮

点击左上角的头像按钮,能够将镜头瞬间定位回玩家自己。

此按钮可以通过地图按钮插件制作出来:

Drill_GaugeButton 鼠标 - 地图按钮集

固定看向

1)定义

固定看向: 即使得镜头 固定看向 某个位置或物体。

如果当前为自动模式,可以使得镜头移动聚焦于目标位置或物体。

如果当前为观光模式,可以使得镜头看向目标位置或物体,鼠标键盘无法移动。

2)看向指令

你可以设置 看向指定图块 或 看向事件。

固定看向设置后,镜头模式的指令操作都会被暂停,必须解除看向才能恢复。

位置越界设置: 插件指令可以越界设置比如位置(0,-60)或超出高度的位置(0,200)。

但如果地图是循环的,那么镜头会永远无法到达越界的目标位置,而不停地移动

因为经过了一次循环,若高度为60,那么镜头的坐标会从 -1瞬间变成 59,反之亦然。

3)瞬间看向设置

镜头跟随玩家或看向某位置时,移动的时间与镜头移动速度有关。

如果镜头速度过慢,你可以设置”瞬间看向”。

把镜头强制拉到目标位置。

问题 - 1像素的偏移

1) 偏移原理

默认镜头移动是1至n像素 整数像素的形式进行移动。

地图弹性移动时,图块、背景和事件的移动值经常存在0.333、0.191之类的像素移动;

由于电脑只能对整数像素进行渲染,所以会造成图块和事件在特定的位置产生1像素的bug细节。

下图为早期版本的缝隙bug(v1.6之前的bug):

镜头经过反复修正,终于使得1像素的偏移缝隙在大部分情况下不会再出现。

2) 细节bug

但是,如果在特定情况下。

细心观察,还是能够发现偏移的小细节:

镜头静态不动时,没有任何问题,而你如果突然走动一下,所有事件会向前偏移1像素,然后迅速恢复与地图同步。(偏移不会产生早期版本的缝隙)

这部分的细节难以修正,因为地图图块和地图背景是先渲染,而事件是后渲染,这里的1像素,是建立在渲染的先后顺序的偏差上。

叠加变化

旋转/缩放/翻转

1)旋转

镜头能通过插件指令,旋转任意角度。

旋转效果和缩放效果可以叠加使用。(v1.9以前的旧版本不能)

另外注意,镜头旋转只影响 地图远景至上层 之间的所有图层。

如果你设置的UI位于 下层、中层或上层,则UI会一起受到旋转的变化。

可见前面章节图层与镜头

2)缩放

镜头能通过插件指令,横向(缩放X) 或纵向(缩放Y) 缩放任意比例,还可以为负数。

旋转效果和缩放效果可以叠加使用。(v1.9以前的旧版本不能)

镜头旋转只影响 地图远景至上层 之间的所有图层。

如果你设置的UI位于 下层、中层或上层,则UI会一起受到旋转的变化。

可见前面章节图层与镜头

3)翻转

本质上翻转就是 负数 形式的缩放或旋转。

比如下图的垂直翻转的插件指令效果是一模一样的。

水平翻转就是只缩放X为-1.00的结果。

垂直翻转就是只缩放Y为-1.00的结果。

顺时针翻转是旋转为180度的结果。

逆时针翻转是旋转为-180度的结果。

4)恢复默认

插件中可以设置在切换地图时自动恢复默认。

防止在旋转、缩放状态时离开地图,把叠加变化带到下一个地图里。

整体平移

1)整体平移

整体平移: 是指镜头控制的所有图层都平移一段距离。(可见2)镜头控制的图层

由于 图片层和最顶层 不受控制,因此可以看到下图的错位效果,

空白的区域可以放自定义的ui结构。

由于整体平移会改变 鼠标点击、UI对齐 的中心位置,因此若你要使用此功能,最好检查一下UI/地图UI/鼠标 类型的插件是否为最新的,旧版插件可能会发生错位,详细看看:2)整体平移兼容问题

2)边缘遮挡层

边缘遮挡层: 是指整体平移时防止玩家看到边缘的遮挡层。

如下图白色部分就是遮挡层。

你可以通过配置关闭遮挡层,看看镜头的边缘是如何工作的。

(可以看到地图管理层的图块是根据镜头位置,实时拼接的)

边缘遮挡层还能修改颜色,用于适配空白区域的底色。

边缘图块

由于地图中不同层次的运行结构不一样,在变换镜头时,会看见一些特殊情况。

比如,在插件中,关闭 ”缩小强制刷新” 设置。

通过插件指令设置镜头缩小至0.5,

可以看到事件(红箭头)、背景(紫箭头)、图块(黄箭头)是三个分离的层次结构。

F:pg mv箱_~Z1ZY$((W`L_6Q2L(%FMH.jpg

使用插件指令旋转12度时,也可以看到部分黑边,都属于正常现象。

F:pg mv箱8365$I)9Z_TAZ{45KE{H$J.jpg

需要注意的是,这些旋转看到的黑边、边角的事件,都不会被 视野触发 激活独立开关,必须要在标准的 矩形视野 范围内才会被激活。

兼容问题

1)缩放兼容问题

由于镜头涉及脚本很多方面,镜头插件只能提供单纯的图像缩放,无法顾及其他插件。仍然需要外部插件主动配合。

比如,鼠标的触发面积地图镜头从原理上互不相通,但是镜头缩小后,鼠标触发面积显然也需要缩小。所以需要专门兼容镜头插件。(现鼠标触发插件已兼容缩放)

再比如,地图ui部件、鼠标辅助面板,也不会与地图一起缩放,这可能会造成比例不对的错位现象。(后期会慢慢给其它插件的缩放情况做兼容)

所以,在控制镜头缩放时,你需要考虑现有的一些功能插件,是否支持镜头缩放,会不会在缩放后错位

2)整体平移兼容问题

由于镜头的所有子插件都要 靠自己 来处理与镜头的平移关系。

因此旧版的插件,不一定能适配镜头最新的功能,可能会出现下面的错位:

如果出现了此问题,及时更新插件即可。

高级功能

镜头墙

镜头墙: 是指一种阻止镜头单向 向上/下/左/右 移动的墙。

如果玩家越过了墙壁线,则镜头将不再受阻止。

镜头墙只在 自动模式 下有效,观光模式下镜头墙会失效。

1)单向墙

图中红色部分为镜头墙的墙面,如果玩家在左墙的左边,则会被墙阻挡,只要在左墙的右边,墙就失效。

2)双向墙

一个事件可以同时拥有左墙和右墙,玩家在事件左边,右墙失效,左墙启用。而玩家去事件右边,右墙启用,左墙失效。可以使得镜头有隔墙划分的效果。

需要注意的是,左墙右墙的实际位置都在事件的左侧边线。上墙下墙的实际位置都在事件的上侧边线

3)宽地图中的墙

以向上的墙为例,当镜头看到了指定的墙(红色部分),那么镜头就会被事件的镜头墙顶起。因为,玩家在上墙的上边,会被墙阻挡,只要在上墙的下面,墙就失效。

4)镜头墙与缩放

如果设置了镜头墙,缩放0.5时;

镜头墙会仍然保持阻塞,挤压镜头,造成向左上方放大。

5)镜头墙摆放说明

循环地图中,镜头墙放在镜头起始区域内会失效。

由于镜头墙在起始区域内存在不可避免的复杂数学计算误差问题,因此摆放在下图蓝色区域内位置的镜头墙,都会失效。

举个例子:

屏幕分辨率为 816x624,除以48,可得出镜头占图块 17x13的面积。那么:

如果有横向循环,则0≤x≤17的范围内,放置左右镜头墙会失效。

如果有纵向循环,则0≤y≤13的范围内,放置上下镜头墙会失效。

以舞台管理层为例子,地图只有横向循环。

镜头墙如果放在 0≤x≤17 的位置,则会失效。

那么,怎样实现x=0的镜头墙呢?

很简单,设计完后,让地图整体向左移动1图块,这样镜头墙的位置就变成了65,而不是0了。相当于利用循环的特性,实现避免镜头墙处于0≤x≤17的情况。

循环地图中,尽量确保地图足够大,防止聪明的镜头进行意外的移动。

原理可见:聪明的镜头

聪明的镜头,在循环地图中,会选择最短路径进行移动。

如果镜头被镜头墙挡住时,玩家走的位置太远,镜头会重新考虑最短路径,可能会向反方向移动。

要解决此问题,把地图的长宽拉大即可,

这样最短路径就不会考虑走反方向的情况了。

视野触发

视野触发: 指事件进入镜头视野后,触发独立开关。

来自插件:

Drill_EventSightSwitch 物体 - 镜头视野开关

可以去看看“8.物体 > 大家族-开关.docx”的开关结构。

可以去示例中看看 体积管理层 的”发现秘密声”事件。

或者 地图UI管理层 的 镜头视野开关 事件。

贡献者

暂无相关贡献者

页面历史

暂无最近变更历史