在虚幻引擎(Unreal Engine)中,摄像机 是用于控制玩家或游戏中其他角色视角的关键工具。它决定了场景中的视图、玩家的观看角度以及游戏的画面呈现方式。虚幻引擎提供了多种类型的摄像机,并支持灵活的控制和调整,以便为游戏提供最佳的视觉效果。
一.实现目标
1. 在虚幻引擎蓝图中的角色蓝图中为角色添加并设置摄像机相关属性实现第一和第三人称的人物控制模式。
2.尝试实现多角色切换和相机平滑切换的效果。
二.前置知识
1.Pitch Yaw Roll
Pitch、Yaw 和 Roll 是描述相机或物体旋转的三种基本角度。
Pitch(俯仰角):指相机沿着横轴(左右方向)旋转,改变视角的上下角度。
例如,镜头向上或向下倾斜。
Yaw(偏航角):指相机沿着垂直轴(上下方向)旋转,改变视角的左右方向。
例如,镜头左右旋转。
Roll(滚转角):指相机沿着纵轴(前后方向)旋转,使图像产生倾斜,
类似于飞机翻滚的动作。
三.不同摄像机模式的属性设置
1.为角色添加摄像机
在角色下添加组件Spring Arm 弹簧臂组件,并为弹簧臂添加摄像机组件
这里的这根红线就是我们的弹簧臂,默认指向我们人物的几何中心。
调整弹簧臂的长度和偏移属性即可获得不同的相机视角(见下图)
2.三组有关的旋转控制属性
现在我们需要关注区分清晰的三组属性,分别是
角色细节面板中的Pawn的使用控制器旋转Pitch Yaw Roll
角色 细节面板中的Pawn的使用控制器所需的旋转和将旋转朝向运动
相机弹簧臂 细节面板下的的使用Pawn控制旋转和继承 Pitch Yaw Roll
3.区分实验
(1)将上面这些属性全部关闭进行实验
结果:
无法使用鼠标旋转视角,相机的视角不会改变
WASD控制人物进行移动,人物的朝向不会改变
(2)在弹簧臂细节面板下将使用Pawn控制旋转勾选
结果:
1.可以使用鼠标控制相机弹簧臂进行视角变化。
2.WASD控制人物进行移动,人物的朝向不会改变。
(3)在角色细节面板下将Pawn的使用控制器旋转属性勾选
结果:
1.可以使用鼠标控制相机弹簧臂进行视角变化。
2.人物朝向始终跟弹簧臂保持一致。
3.WASD控制人物进行移动,人物的朝向不会改变。
现在我们发现角色身上的使用控制器控制旋转和相机弹簧臂下的使用Pawn控制旋转发生了冲突
所以在第三人称游戏中,为了使玩家进行相机移动时不影响角色的旋转朝向,我们一般会将角色身上的使用控制器控制旋转全部关闭。
(4)在角色细节面板下将旋转朝向运动属性勾选
为了使控制器不影响我们角色的旋转,我们先取消Pawn的使用控制器旋转属性
结果:
1.可以使用鼠标控制相机弹簧臂进行视角变化。
2.WASD控制人物进行移动,人物的朝向可以改变。
4.旋转控制模式总结
总结一下主要有以下两点
1.如果希望通过摄像机的视角控制角色的朝向(第一人称模式),你需要
*勾选角色细节面板下的Pawn中的使用控制器旋转属性。
*勾选角色旋转面板下的使用控制器所需的旋转(此项搭配控制器使用,使得当摄像机视角告诉变化时,角色能平滑旋转)
2.如果希望使用输入运动来控制角色的朝向(第三人称模式),你需要
*取消勾选角色细节面板下的Pawn中的使用控制器旋转属性。
*勾选摄像机弹簧手臂细节面板下的使用Pawn控制旋转和继承Pitch Yaw Roll
*勾选角色细节面板下的将旋转朝向运动(此项搭配Pawn使用,使角色能根据运动的方向改变自身朝向)
四.实现多角色切换
我们接着来实现一个有意思的场景中多个角色时的相机过渡切换控制的效果。
最终的效果如下图所示
1.我们需要更多的简小姐!
首先我们把角色蓝图复制若干份放置在场景中的不同位置,并分别为其细节面板下Pawn中的自动控制玩家中设置玩家0~玩家n(如下图)。
之后在大纲面板下选择这几个角色Actor(如下图)
进入我们打开关卡蓝图,右键获得对这几个角色Actor的引用(结果如下图)
2在关卡蓝图中编写逻辑
首先以从1号玩家过渡到2号玩家为例子,整体的过程如下,我们下面分析一下
1.获得键盘的输入
这里我简单以数字键盘1为例。
2.使用Mul_Gate节点
[快捷键:M+鼠标左键点击]
添加若干个引脚,提供多个输出接口。此节点会从第一个输出节点开始,每次运行后递增输出节点,直到最后一个节点,这里为了可以循环勾选上Loop。
3.使用SetView Target With Blend(混合目标视图节点)
用于控制摄像机的视角切换,特别是在过渡(Blend)过程中,使得视角的转换更加平滑。
这个节点通常用于在游戏中需要平滑过渡到不同的摄像机视角时。例如,当玩家从一个视角切换到另一个视角时,通常会使用这个节点来在一段时间内平滑过渡,以避免突兀的跳变。
参数说明:
New View Target:新的视角目标。可以是一个玩家角色、AI 或其他任何可用的 Actor(例如摄像机)。这个目标表示你希望视角切换到的对象。
Blend Time:过渡时间,单位是秒,表示摄像机从当前视角过渡到新视角所需要的时间。较短的时间会使得切换更为突兀,较长的时间则会使得过渡更加平滑。
Blend Func:过渡函数类型,用于定义过渡效果的曲线。
Linear ,Ease In ,Ease out, Ease In and Out
Blend Exp:过渡的指数。与 Blend Func 一起使用,用于调整过渡的强度。较高的值会使过渡更为平滑,较低的值则使过渡更为突兀。
4.使用Possess节点进行当前玩家控制器的切换
5.使用Delay节点
[快捷键:D+鼠标左键点击]
为相机缓冲留出时间,等待视图过渡完再进行玩家控制器的切换
我们做的就是将当前的玩家控制器在延迟1秒(这里的1秒需要与前面混合视图节点的Blend时间保持一致)后进行切换,期间进行相机视图的过渡切换。
后面都是类似的结构,最后得到下面的样子。
3.简单整理蓝图
我们发现每种链接后面的三个节点都是相同的,为了时蓝图结构更清晰易读,我们一般会将多次出现的重复节点组制作成函数或者宏,以便复用,由于这里我们使用了在函数中无法使用的Delay节点,所以我们可以采用折叠到宏的方法来整理一下(如下图)
这样就顺眼多啦!
现在运行项目,我们就可以通过按下键盘来进行多个角色的控制切换和相机的平滑过渡了,太酷啦!
本篇完~