在一些多人竞技手游中,以荒野乱斗为代表,其镜头视角具有“延迟跟随”的性质,即玩家控制角色在屏幕可视范围的一定空间内移动时,镜头保持静止。而当玩家移动具有“超出镜头范围”的趋势时,镜头将相应地沿着玩家方向偏移,实现延迟跟随的效果。
实时跟随
实时跟随是一种常见的镜头跟随方式,比如典型的第一人称视角游戏,或是一些第三人称视角游戏中,镜头与玩家角色间的位置保持相对静止。这种跟随模式实现非常简单,一种手段是:在帧更新时,镜头本身在世界坐标系内保持与玩家一直的移动向量。在Unity中,可以直接将镜头作为子物体挂载到角色的GameObject之下,无需脚本即可实现。
延迟跟随
例如荒野乱斗一类游戏,我们知道,镜头的延时跟随发生在“当前角色具有超出镜头视野的移动趋势”时,一种简单的判别方式可以依赖于镜头视野中心与玩家所处位置的相对距离。假设视野中心与玩家所处位置的相对距离大于一定的阈值X,那么代表玩家有向超出镜头视野外的移动倾向,那么应相应对镜头进行移动。
相对关系的量化
我们知道,玩家所处位置可以用一个具体的世界坐标(Vector3)表示,但镜头视野中心实际是一条无穷长度的射线,并非具体一点。因此不妨取镜头视野中心与地面的交点point1,对于玩家角色,相应地取该GameObject中心沿XZ方向的法线(即Y轴)与地面的交点point2。则二者的相对位置关系可以用一向量distance表示,其中&#