适用于2.5D模拟经营、战旗策略类游戲摄像机脚本需要获取主摄像机Main Camera对象和地形terrain对象,摄像机初始位置基于地图的尺寸设定在地图上空中心位置并且x轴旋转45度俯瞰地图。
實现了缩放摄像机(拉远、拉近)方法、WASD移动摄像机方法、按住鼠标右键旋转摄像机方法和限制摄像机移动范围方法其中限制摄像机移動范围方法并不准确,需要获得摄像机视口范围即视野和地图相交的坐标信息因为高度增加摄像机视野会变大,不同高度的摄像机被限淛的范围应和高度建立联系解决这一问题涉及了较深数学知识,先按下不表使用简单的范围限制。
完成这一脚本对扩充了我的以下知識点:
1.Mathf.Sin等三角函数参数为弧度需要把角度进行转换后传入
2. 地形尺寸获取即获取地形的碰撞器的尺寸
3.摄像机位置只能对position进行赋值、加减等操作,不能单独对position的x、y、z变量操作因此需要声明一个Vector3变量,对此变量进行操作再传给摄像机坐标
5.旋转摄像机后再移动摄像机并不会按照摄像机方向移动,仍然会按照世界坐标系移动因此移动摄像机算法中,不能使用对摄像机坐标的x、y、z直接加减要使用摄像机坐标直接加减Vector3变量,该变量需要乘以transform.forward或transform.right方向向量考虑到摄像机的x轴旋转了一定角度,需要把forward、right赋值为另一个Vector3变量将其y变量赋为0,就使摄像机按照朝向的水平方向移动了
6.由于摄像机是自由移动的没有target作为目标点,缩放就不能使用修改distance的方法在试过很多错误道路后,我发现缩放的实现和移动唯一的不同就是把将y变量赋为0这一步取消
版权声明:本文为博主原创文章转载请附上博文链接!