上一篇文章完成了一些基础的设置,这篇文章主要来设置一下摄像机。
摄像机的控制主要有鼠标滚轮控制缩放,WASD键控制前后左右移动,QE键控制左右旋转。
摄像机设置
首先打开BP_Pawn,然后添加Spring和Camera组件。


层级关系如下图

我们把摄像机放到弹簧臂下面,这样摄像机就能跟着弹簧臂变换了。
弹簧臂是个很有用的东西,有了它我们设置摄像机就变得容易了很多。
想当年学Unity的时候,自己写代码去控制摄像机,说实话还是挺不容易的。
我们把摄像机旋转-60度,然后放到700位置处,取消碰撞测试。
碰撞测试的功能主要是用在当摄像机和弹簧臂根部之间有遮挡的时候,摄像机会沿着弹簧臂那根红线向前移动,直到没有被遮挡。

摄像机缩放
打开Project Settings

在输入里面的绑定里面的轴映射里面添加一个映射,如下图设置。

设置好了以后回到BP_Pawn,打开事件图表。

这个时候输入右键搜索Zoom就有了相应的事件了,是不是很简单呢。

首先添加个变量,表示缩放大小,然后在Tick事件里面平滑的移动,详细蓝图如下。

添加个PlayerStart

放到原点。

运行以后会发现,貌似方向反了,咱们需要改一下。

好像还有一个问题?为什么鼠标滚轮没有动,它自己在动呢?
很简单,我们的变量ZoomDesired初始值为0,给它个初始值就可以了。

初始化一般都是在beginPlay里面。

好了,咱们的摄像机缩放就做完了,里面的一些参数你们也可以根据具体情况进行调节。
摄像机移动
和前面一样,打开ProjectSetting
在输入里面添加两个映射。

添加一个向量类型的变量LocationDesired

使用LocationDesired保存需要移动的位置

然后在Tick里面平滑的插值

这个时候运行,WASD就可以控制前后左右移动啦。
当然还有个问题需要解决一下,那就是LocationDesired咱们也得给个初始值。

好了,摄像机移动就搞完了。
摄像机旋转
这次和前面不太一样了,依然是打开ProjecSettings
这次使用Action Mappings而不是Axis Mappings。
这两者的区别就是前者是一次性的而后者是持续性的。

添加一个Rotator类型变量RotationDesired

RotationDesired用来保存需要旋转的大小

然后在Tick里面进行平滑的旋转。

当然和前面一样需要有个小问题,需要给RotationDesired变量设置初始值。

这个时候运行就可以了。
当你旋转以后,再去移动就会发现不对劲,移动是跟着世界坐标设置的,而我们需要的是局部坐标。

好了,到这里摄像机基本上就设置完了,大家可以根据自己的情况进行调节。