可以通过WASD控制“CameraPawn”的移动;通过鼠标中键旋转视角;通过alt+鼠标中键将视角回归默认值;通过shift加速移动。
打开“CameraPawnController”,给如下节点添加注释,命名为“MovementX”
接下来开始开始编辑“MovementY”相关的逻辑
首先从“MovementX”中复制一些节点
新建一个宏,命名为“MovementY”
将“MovementX”中除了输入输出节点外的其它节点全部复制到“MovementY”中,然后给输入输出节点拖入引脚。
重命名输入输出的引脚
将“AxisValue”דMoveSensitivity”דSpeedMultiplier”的值赋给创建的新向量的Y
回到事件图表中,运用宏“MovementY”
此时已经可以控制“CameraPawn”在X和Y轴上移动了:
在项目设置中,添加一个操作映射
返回“CameraPawnController”,添加一个浮点型变量,命名为“PanSensitivity”,设为公有,表示旋转灵敏度
设置默认值为5
在事件图表中添加如下节点:
当按下鼠标中键时,设置“CameraPawn”无法移动。把鼠标X的值与旋转灵敏度相乘再加上“CameraPawn”当前的Z轴的旋转值,将这个旋转值结果重新赋给“CameraPawn”的旋转。
此时运行游戏效果如下所示:
将“Pan X”的节点复制一份,作为“Pan Y”只需更改如下两个部分
将pitch的值限制在-15~45之间
此时的运行效果如下所示:
但此时的的问题是,如果以一个倾斜的视角再控制“CameraPawn”进行移动后,“CameraPawn”在Z轴上的位置就会发生改变,也就是会“遁地”或“升天”
打开“CameraPawn”,选中“Sphere”,然后将位置Z的值从100改为0
再回到“CameraPawnController”的事件图表中,添加如下标注的节点。其实意思就是让宏“Movement Y”输出的transform中的location中的Z轴的值固定为100。
此时再运行游戏就不会出现之前的bug了。
再次打开项目设置,添加一个操作映射,勾选Alt(意思是只有按下Alt键再按鼠标中键才会执行PanRest事件)
再回到“CameraPawnController”的事件图表中,添加如下节点:
此时我们按下alt+鼠标中键,就可以将视角重新设置回默认值
如果我们想按住shift来加速移动“CameraPawn”,可以添加如下节点
最终效果: