在许多玩家可以进入水下的游戏中,当您看屏幕的上半部分在空中,屏幕的下半部分在水下时,几乎就像不存在水一样,播放器正在...随着水声缓慢飞行?
有解决这个问题的逻辑方法吗?算法?由于许多游戏仍然具有此功能,因此似乎还没有解决方案。我不想犯同样的错误。
在许多玩家可以进入水下的游戏中,当您看屏幕的上半部分在空中,屏幕的下半部分在水下时,几乎就像不存在水一样,播放器正在...随着水声缓慢飞行?
有解决这个问题的逻辑方法吗?算法?由于许多游戏仍然具有此功能,因此似乎还没有解决方案。我不想犯同样的错误。
Answers:
简单地不允许这种情况怎么样?
我不知道您是如何制作游戏的,但是如果您检测到该视图部分处于水下,则可以强制将相机置于水面之上,并且只有当整个视图都在水面之下时,您才能切换到水下的看法。
根据您的操作方式,这可能意味着从开始潜水的那一刻起以及从水面下实际观看场景时还有额外的延迟。从UX的角度来看,这实际上可能是一件好事,因此请随时尝试。
在一个单独但又相关的注解上,我想知道为什么大多数水下场景都变得清晰明了……如果您将头放在水下,您会注意到您的眼睛不是为水下瞄准而设计的,因此一切看上去都很模糊。您必须戴上护目镜才能真正在水下看到。
另外,在水下,事物看起来(和听到)与在水面上截然不同。水比空气吸收光的速度快得多,因此光传播的距离越远,到达您的眼睛的光就越少。这意味着您走得越深,物体看起来越蓝(红光的能量更少,因此比蓝光更容易吸收)。实际上,在水下仅仅12米处,血液看起来是黑色的,而不是红色。
我还没有看到一个非专业的游戏,它甚至试图使水下环境变得正确……
您所指的问题与相机在水平面上的视线剪切有关。典型的“水下效果”是通过全屏后处理效果来完成的,如果像这样裁剪视图,看起来将不正确(这将是相反的问题)。
即使您费心去检测剪裁情况(可能很困难)并剪刀剪裁或剪裁其他全屏水下效果,使其仅应用于水下场景(这是您可以探索的潜在解决方案),您仍然可以实际水上飞机本身的问题。过渡过程中仍然会有令人不快的视觉伪像。您可以检测到该平面并将其严重模糊。这可能是最接近真实世界的类比,即通过部分浸没的相机镜头所看到的视图。
或者,完全避免这种情况的发生:如果玩家“在”水上方,则不要让相机进入水平面以下;当玩家“在”水之下时,不要让相机进入水平面以上。仅当您具有针对水上/水下的离散播放器操作模式时,这才真正起作用,并且如果有物理按钮或播放器可以在“在表面游泳”和“在下面游泳”之间进行转换的其他明显且明显的动作,则效果最佳。表面。”
您无需解释潜水的明确按键,而可以将摄像机调低到足够高的水平来解释“俯冲”,从而解释向前运动。然后,您可以使用图形效果(飞溅或其他效果)来隐藏相机在水平面上的过渡,通常这是无法跨越的。
我们在激战2中使用了这种技术。
当相机在水下时,游戏通常会开启某种效果,主要是蓝雾。要处理近平面夹过水面的情况,您可以在相机靠近水面时打开雾着色器,然后将一些代码添加到像素着色器中,以计算对应于近水平面的点该像素,并且仅当该点在水面以下时才激活雾。
如果雾化是作为后期处理完成的,则通过渲染全屏通道,这特别容易-您只需要计算全屏四边形或三角形的每个顶点在近平面上的世界空间位置(带反函数)视图/投影矩阵),然后将此值插值到像素着色器;然后您可以检查其垂直分量,看看它是在水平面之上还是之下。
对于加分点,您可以使用相同的技术添加几像素厚的纹理来表示水面的弯月面,因此它看起来不太像一条锐利的线。
我有两种方法;一个使用着色器,另一个可以使用GUI。两者将开始相同:
“简体”- If, Object(Camera) is in 3d Space(Water bounding box/whatever you choose) trigger a shader/GUI.
着色器将提供更多的真实感,您可以应用变形像这样
雾像COM。男孩说,可以通过GUI应用。创建具有部分透明度的照片,并将其用作整个相机视图上的GUI。对于您提供的照片,我会尝试使用棕色。
这已在名为Drea D Out的恐怖游戏中使用。如果玩家走近幽灵,屏幕将变得模糊。尽管它没有在水下使用,但产生了类似的效果:)
您始终可以选择两种方法,也可以制作可以改变颜色的着色器。
Taken from : http://sahdan-share.blogspot.com/2013/04/dreadout.html