RPC游戏案例【3. 装备系统】
装备系统 本章工程文件为:RPG_Tutorial_Series_07,如遇问题可下载项目文件之后自行对照 预期效果:可以捡装备,并配备装备系统UI,也可通过系统上装备 数据管理 首先创建一个S_Weapons结构体,内容如下 其中E_Weapon_Types枚举的内容如下 创建一个DB_Weapons的数据表,补充如下内容 创建一个S_Slots结构体,用于存储武器数据的引用 接着创建一个BP_Weapon的Actor蓝图,可以通过配置来设置不同的网格体,下面设置的是Heavy_Sword 编写完成之后,将这个Actor拖到场景里,就会看到对应的Heavy_Sword模型。如果在ItemData里选择其他的模型,场景里的模型也会实时发生变化 蓝图组件 创建一个蓝图组件,命名为BPC_EquipmentSystem,我们在这里实现装备系统的主要逻辑 在此之前,先创建一个输入,命名为IA_Interact 当玩家按下E键的时候,就捡起面前的物体 进入BPC_EquipmentSystem,创建一个AddWeapon函数 ...
RPC游戏案例【2. 动作交互】
人物状态 本章工程文件为:RPG_Tutorial_Series_04,如遇问题可下载工程文件之后自行对照 预期效果:完善人物的血条,蓝条和经验条,按Alt键能快走,同时耗蓝,正常情况下恢复蓝 状态组件 创建一个Actor组件,命名为BPC_Player_stats 创建如下变量和函数 各函数逻辑如下 HUD 在UI文件夹下创建一个WBP_HUD 人物Pawn 打开BP_ThirdPersonCharacter 修改碰撞预设 打开事件蓝图,补充逻辑 添加BPC_Player_Stats组件 打开Input文件夹,创建一个输入资产,命名为IA_Sprint,然后打开IMC_Default,添加如下的输入映射 回到BP_ThirdPersonCharacter,补充如下逻辑,在普通状态下以固定速度回蓝 加速跑逻辑 优化逻辑 最后复制一个动画 增大比率范围 打开之前的混合空间 应用上这个动画,这样加速跑的时候,人物的双腿就动的更 ...
RPC游戏案例【1. 运动动画】
项目配置 UE版本:5.1.1 将工程目录中的 Resources 文件夹里的动画导入到 Characters/RPG_Character/Animations里 接着再创建两个子文件夹,将动画分好类 运动动画 本章工程文件为:RPG_Tutorial_Series_01,如遇问题可下载之后自行对照 预期效果:实现行走、跳跃、蹲伏、倾斜等常见动画效果 混合空间 在Locomotion文件夹下创建一个混合空间1D,命名为Locomotion_BlendSpace1D 打开混合空间,将名称改为Speed,最大值改为500,然后将InPlace、Walk和Run分别拖入时间轴里 你可以按住Ctrl键,然后通过鼠标预览不同的Speed下的不同动画 动画蓝图 创建一个动画蓝图,命名为ABP_RPGCharacter,进入动画蓝图之后,创建一个命名为Locomotion的状态机 行走和奔跑 预期效果:通过方向控制键,角色能够产生位移,同时也会做出相应的动作 配置如下的状态和规则 Idle状态就直接播放Idle动画 Walk/Run ...
开关门【案例】
简单交互-开关门 本节将通过开关门案例带你了解人与世界场景中物体的简单交互过程。 简单场景搭建 为了便于管理,我们新建一个文件夹名为openDoor存放我们所有资产 进入文件夹,新建关卡并构建一个简单场景 空白关卡中添加定向光源、天空大气和指数级高度雾使场景点亮 构建一个平台供物体摆放和人物活动,还可以通过更改材质改变平台样式 在内容中搜索资源door,找到SM_Door和SM_DoorFrame,复制一份到我们的openDoor文件夹中,顺便我们把机器人蓝图类也复制过去,后面需要对其进行操作 新建一个蓝图类BP_Door,同时根据资源来构建门 将构建好的门拖入场景中 基本场景就搭好了,如下图: 开关门逻辑 基本原理:通过添加时间轴控制门的旋转角度 在BP_Door蓝图中新增自定义事件OpenDoor,通过设置时间轴和相对旋转使门打开 上面只实现了关门,要想关门我们只需要使用Flip进行反转即可 这里我们使用了插值计算,将事件轴里 ...
超阈限空间VR复现
视频教程已同步发布至B站:https://www.bilibili.com/video/BV1Lg4y1F7Xd UE版本:5.1.1 创建一个虚拟现实游戏项目 描边选中 主要用到了后期处理体积的后期处理材质 这里的PP_Highlight材质文件,直接从上面提供的工程文件里面迁移过来,后面会专门出视频讲解原理 逻辑实现 打开默认的Pawn文件 在右手食指处创建一个场景组件,用于指示手指的方位 再事件图表里新增一个Tick函数 当我们按下Grasp键的时候,就对当前命中的物体进行对应操作 没按下的时候,就检测当前方位是否有命中物体,如果命中了,就让命中的物体显示出白色描边 选中和描边 LineTrace的核心逻辑如下 SetGlowingEdge的核心逻辑如下 检测击中的物体是否为StaticMeshActor(这里可以改成你想要的任何类型) 看这个物体是否可以被抓取 如果可以抓取,就把这个物体设为TmpHitTarget,并判断它是否有效 然后再看上一帧命中的物体,命名为TmpLastTarget,看它是否有效,这里会有 ...
双手持枪
视频教程已同步发布至B站:https://www.bilibili.com/video/BV1Jc411n7oZ 初始配置 UE版本:5.1 解压模型压缩包,拖到Content文件夹里 先创建一个BP_Gun的蓝图,然后把模型放进去,补充上弹夹,把手等组件。然后放上主控制器和次控制器,用于后面的逻辑计算 直接将这个Actor放在默认的场景地图即可 创建手部插槽 打开手部网格体,右键,添加插槽,命名为gun_main_socket 选择使用特定动画,选中Grasp动画,将手和枪的位置调成这样即可 创建Grab接口 接着创建一个接口,实现抓取和释放功能 将接口挂载到BP_Gun上 实现Grab 注意插槽的名称不要写错 这一段的主要逻辑如下 检测手是否在主抓握点内 在的话就将这把枪附加到手上 找到手部网格体里配置的插槽,获取对应的旋转和位置,然后应用到抢上 应用对应的抓枪动画 最后在Pawn里面调用这个Grab函数即可 核心逻辑是按下grab键的时候,检测手边是否有枪,枪是否实现了Grab接口,如果都满足,就直接 ...
手部控制
手部模型 导入模型 先创建一个../assets文件夹,导入手部模型 再创建一个Animations文件夹,导入动画 注意这里的导入选项 添加材质 创建一个材质M_QK_Hand,导入的三个贴图放到材质里,并按照如下排布 把这个材质应用到手上 更换模型 添加两个操作映射 接下来开始调试手部模型,打开VRPawn 选中MotionControllerLeft和Right,添加骨骼网格体组件,并对其命名 分别对左右网格体进行如下设置 关闭HMD的可视 禁止MotionControllerLeft和Right显示设备模型 然后编译保存,你将会发现你的控制器变成了手部模型,效果如下 手部动画 接下来开始创建动画,创建动画蓝图,并命名为BP_HandAnim 创建一个枚举,命名为Enum_HandAnim 再创建一个枚举,命名为Enum_ObjectType 双击进入BP_HandAnim,创建两个变量,注意命名和变量类型 配置状态和状态转换规则 依次双击每个状态机,配 ...
动画入门【案例】
项目配置 UE版本:5.1.1 创建一个第三人称游戏项目 将下面两个素材导入项目 创建一个Blueprints文件夹,在这个文件夹下创建一个游戏模式,命名为BP_WuKongGameMode 将默认的Pawn改为SunWuKongPlayerCharacter 将这个游戏模式设为默认的游戏模式 将SoulCave里面的LV_Soul_Cave移动到自己的Maps文件夹内,并设置为默认地图 基础动画 创建一个角色蓝图,命名为BP_WuKong,并将它设置为游戏模式的默认Pawn 配置骨骼网格体,并设置对应的位置和旋转 然后加上一个弹簧臂组件(CameraBoom)和一个摄像机(FollowCamera) 前后移动 可以直接从UE默认创建的BP_ThirdPersonCharacter里面将如下蓝图复制到自己的BP_WuKong里,用于控制角色的前后左右移动 旋转 和上面类似,从BP_ThirdPersonCharacter里将下面这段蓝图复制过来 选择不使用控制器旋转角色 打开摄像机弹簧臂的使用Pawn控制旋转 ...
Painting
视频教程已同步发布至B站:https://www.bilibili.com/video/BV1oY411r7mY 画作 首先完成常规的项目创建操作,将多余的物体全部删掉,然后新建复制默认的游戏模式和VRPawn,并将默认地图另存为PaintingMap 画点连线 创建一个Actor,命名为BP_Stroke,并在这个Stroke下创建两个“实例化静态网格体组件” 导入Cylinder和Sphere(拖入即可),然后创建一个M_Stroke材质备用 注意混合模式要选择半透明,这能保证在笔画堆叠的情况下不会出现闪烁的效果 接着在StrokeMeshes中选择Cylinder静态网格体和M_stroke材质;在JointMeshes中选择Sphere静态网格体和M_stroke材质。 创建PreviousCursorLocation和ControlPoints变量,以及Update函数 在PaintingPawn中调用Update函数,实现按下Trigger生成连续小球的功能 将Joint反转变换位置收缩为GetNextJointTransfo ...
描边
描边 原理 主要原理是利用深度缓冲来计算物体的边缘像素 大致原理如下 材质 主要用到了后期处理体积的后期处理材质 需要给发光的物体打开自定义深度通道 在创建材质的时候要选择后期处理 材质的混合位置要选择半透明前,不然边缘会一直闪动 计算过程 使用到了SceneTextSize来获取UV ScreenPosition来计算位置 SceneTexture来计算深度 核心过程 优化 如果有物体挡在前面, 就不展示描边 描边加厚 给物体的主体部分加点颜色滤镜 不同物体不同颜色 先打开启用模具 根据不同的深度模具值返回不同的颜色 给物体配置上对应的深度模具值 使展示的颜色变淡