虚幻引擎之相机控制

通过本节学习,我们可以在虚幻引擎中按照特定时间来切换摄像机视角,我们可以很方便的进行观看不同摄像机的视野。
首先打开虚幻,在这里我是用的是虚幻4.19,打开虚幻之后,我们首先新建一个工程,在这里我们不使用新手内容。如下图所示:
在这里插入图片描述
我们可以在工程里创建一些多面体,如果有工程也可以用。我创建三个多面体。分别是圆锥体、正方体、球体。
在这里插入图片描述
接下来,我们拖入三个carmera,来进行拍摄这三个物体。
在modes的搜索框里输入camera,便可以搜索到摄像机。拖入场景中三个camera即可。
我们切换摄像机视角需要使用一个Event Graph来控制事件的开始,还需要新建一个函数,在事件控制器中通过调用函数来进行控制camera的视角变化。
在这里插入图片描述
我们在event graph中创建一个蓝图
在这里插入图片描述
在Set Timer by Function Name中,我们需要填写Function Name、Timer以及勾选上Looping选项,其中timer是间隔多长时间来执行该函数,Looping为循环执行该函数。
在创建完event graph后,我们需要创建一个Function,所以我们选择function的新建功能来新建一个函数。并且rename为switch camera.在这里插入图片描述
switch camera说明:
新建一个整形变量,并对该整形变量加1,之后对3进行取余,会得到0、1、2,然后进入select选项,通过传递过来的0、1、2来进行不同摄像机的切换,设置三个摄像机分别对应3个不同的参数,然后我们把结果输出。下面是该函数的蓝图:
在这里插入图片描述
接着我们需要在event graph中调用我们的函数,在Function Name中填上我们创建的函数名字,设置摄像机切换的时间,并且记得盐勾选Looping,选择循环执行我们创建的函数,从而持续进行camera切换。
在这里插入图片描述
接下来我们进行编译,播放,即可看到摄像机切换的效果。

虚幻引擎中,`ControlRotation` 是一个重要的属性,主要用于控制摄像机或其他组件的方向而不影响物理模拟或碰撞响应。它是 `APawn` 类及其派生类(例如玩家控制器 `APlayerController`)的一个成员变量。通常来说,`ControlRotation` 主要影响的是视角的旋转而非实体本身的姿态变化。 ### ControlRotation 的应用场景 1. **第一人称视图** - 当你在制作一款第一人称射击游戏时,`ControlRotation` 就是用来管理摄像机跟随鼠标移动而产生的上下左右转动效果的关键所在。它不会直接影响角色模型自身的朝向,这使得你可以自由地环顾四周,但保持身体面朝前方。 2. **第三人称视角** - 即便是在第三人称游戏中,有时候也需要独立于角色本身来调整相机的角度。这时就可以用到 `ControlRotation` 来单独处理摄像机的位置与方向了。 3. **UI元素定位** - 某些 UI 元素可能会依据玩家视线来进行布局摆放或者动画播放。此时可以借助 `ControlRotation` 获取准确的观察角度信息并据此作出相应反应。 4. **虚拟摇杆操控** - 移动端上常见的触摸屏摇杆输入同样依赖于该属性来实现流畅自然的操作体验。 ### 设置和使用 ControlRotation 可以直接访问或设置 `APawn::ControlRotation` 进行读取、更新等操作。需要注意的一点是,当设置了 `bUse Controller Rotation Pitch/Yaw/Roll = true` 后,才会真正启用这个功能,并且允许通过代码逻辑来自由调节每个分量的具体数值。 ```cpp // 示例代码片段展示如何手动更改 ControlRotation void AMyPawnClass::UpdateCamera(float DeltaTime) { // 更新 CameraBoom 组件的目标臂长和其他参数... if (HasAuthority()) { const float TargetPitch = DesiredPitch; // 计算目标俯仰角 // 平滑过渡至新角度 CurrentControlRot.Pitch = FMath::FInterpTo(CurrentControlRot.Pitch, TargetPitch, DeltaTime, InterpolationSpeed); // 应用新的旋转值给 Pawn 控制器 GetController()->SetControlRotation(CurrentControlRot); } } ``` 此外,在 Blueprint 视觉脚本环境中也有对应的节点可供拖拽连线完成类似的任务设定。 总之,合理运用 `ControlRotation` 可以为开发者提供极大的灵活性去定制化各种视觉特效及交互设计需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值