写在前面,摇杆控制人物的移动,摄像机跟随人物移动,且滑动屏幕可以控制摄像机观察人物的角度。
需要考虑的问题
1、摇杆滑动角度的计算。
2、摇杆控制效果程度的计算(即:摇杆距离中心位置越远人物的移动速度越快的效果,当然这里是有个上限值的,就是摇杆滑动到极限的情况,这种情况人物的移动最快)
3、如何将摇杆的滑动角度转换为摄像机观察人物的角度。
4、使人物在原来的位置按照摇杆转换为的摄像机观察人物的方向移动即可。
解决以上四个问题,即可实现自定摇杆的效果。
前两个问题比较好实现,通过触摸的位置(设为 pos)与摇杆中心的位置(设为 center),用三角数学中的反正切即可得到,在此不再赘述。
第四个问题也比较好实现,不再多说。
关键的问题是弟三个。发挥一下想象,可以把摄像机围绕人物的旋转想象成摇杆的滑动,仔细想,是不是这样的一种感觉呢?没错就是这样的。
OK,下面贴出解决第三个问题的关键性代码:
float angle; //摇杆滑动的角度 Vector3 joyStickTargetDir = Vector3.zero; //摇杆的方向 Transform CamTranform; //跟随人物的摄像机 Transform player; //人物 joyStickTargetDir = Quaternion.AngleAxis(angle,CamTranform.up) * CamTranform.forward; joyStickTargetDir.y = 0; joyStickTargetDir =player.position + joyStickTargetDir.normalized * 1f;
至此,自定义摇杆关键性问题已近解决,其他的实现细节不再赘述。
注意理解以下代码的几何含义:
Quaternion.AngleAxis(angle,CamTranform.up) * CamTranform.forward;