适用范围:场景内只有2人,或一直注视主目标的状态
擅长处理:宏观视角,第三人称的注视视角
最初原型:火影忍者究极风暴的摄像头,可以在一定范围内来回跑动而不会频繁转动摄像机
设计思路:
- 摄像机永远注视敌我双方连线中点(待优化部分);
- 摄像机按照敌我之间距离的不同有着处理形式的变化;
- 摇杆操作方向的前方永远是当前摄像机视角的前方;
正文:
(注:因为Indienova本身的文本编辑原因,Word中所有公式角标和向量都无法正常显示,请记住这里的线是向量表示)
- 初始变量:我方角色O,敌方角色E,OE中点M,相机在地面的投影C,初始角度θ';
- 取EO与MC夹角θ,初始化摄像机位置C在|θ| = θ',偏向角色一方(暂定右),与M距离为length的位置上;
- 随着OE的相对位置变化,M的位置也会有相应变化,C的位置取决于如下规则:
- |θ| <= θo时,不改变MC的朝向,以当前角度θ进行平移;
- |θ| > θo时,保持这一最大角度,令MC相对EO进行旋转;
- 注意旋转后,EO和MC的相对位置必须和转动前相同,不能出现转动后越轴的情况;
- 如图1所示,即使C'处在了另外一个轴上,因为未超出最大角θo,MC的朝向依然不会改变;
- z 此套2D规则基础上,为C添加高度hight,即可得到C的三维坐标,此时摄像机永远位于C点,注视M点;
- 另外该摄像机会根据r的长度,给予不同的θo、length和hight值:
- r < rmin时,极限角度θo = θmin,距离l = lmin,高度h = hmin;
- r <= rmin && r <= rmin 时,计算出percent = (r - rmin) / (rmax - rmin),极限角度θo = θmin + percent * (θmax - θmin),距离l、高度h亦作相同处理;
- r > rmax时,极限角度θo = θmax,距离l = lmax,高度h = hmax;
需要开放的可调整数据:
- 距离范围rmin和rmax;
- EO和MC的初始夹角θ'和夹角θmin、θmax;
- MC距离lmin和lmax;
- 摄像机高度hmin和hmax;
优化思路:
目前可以想到的一个优化点就是,其实M点(注视点)的位置,也是一个可以控制的变量。当我更倾向于注视敌人时,可以将M点推到E的位置,这样就和传统的敌人——我——摄像机三点一线的设计比较接近,同时保证了有一定的容忍角度θ。更倾向于自己时,则可以把注视点回拉,大概也能有不错的视角。
尚存问题:
当双方距离过近时,其实会存在一个圆形范围,即使双方位置任意调转摄像机也不会跟随转动,虽然不会导致过于眩晕的情况,但之后远离怎么恢复原始角度,包括正向越轴(双方面对面行走直至穿插远离,行走射线与屏幕朝向呈90°角的情况)会导致摄像机瞬间转向的问题,如何优化还是未知数。
暂无关于此日志的评论。