虚幻引擎学习笔记——Month2 Week1

Day1

设置游戏中玩家角色朝着相机的方向移动:
  • 弹簧臂相关设置:
    虚幻引擎学习笔记——Month2 Week1_第1张图片

  • BP_Character相关设置:
    虚幻引擎学习笔记——Month2 Week1_第2张图片

  • Character Movement相关设置:
    虚幻引擎学习笔记——Month2 Week1_第3张图片

  • 蓝图书写,WSAD控制玩家角色移动,并让玩家朝着相机的方向移动虚幻引擎学习笔记——Month2 Week1_第4张图片

  • 鼠标控制角色弹簧臂上的相机的上下、左右视角
    虚幻引擎学习笔记——Month2 Week1_第5张图片



角色动画蓝图:
  • 创建动画蓝图

  • 父类选择:AnimInstance;目标骨骼选择:角色的骨骼(因为我们现在使用的模型不再是静态网格体模型了,所以需要为其绑定相关骨骼)


  • 查看人物模型骨骼名称的方法:
    虚幻引擎学习笔记——Month2 Week1_第6张图片




  • 在角色动画蓝图中,最终输出的动作姿势节点(Output Pose节点),只能连入一个动作节点。如果想要连入多个节点,有两种方式:
    一、连接Blend混合节点,Blend混合节点可以连入多个动作。
    二、连接 “状态基” 节点,在 “状态基” 节点内添加动作节点。(“状态基”的用法就是:把动作拉进来,判断,给条件)
    虚幻引擎学习笔记——Month2 Week1_第7张图片

  • 一个角色会有很多动作,如静止、慢跑、奔跑…
    每个动作又会有很多状态,如,慢跑中会有:向左慢跑、向右慢跑、向前慢跑、向后慢跑
    通常,我们会将一个角色有关系的多个动作放入一个“状态基”中,每个动作之间增加切换条件。每个动作单独创建“混合空间”,每个混合空间中包含了每个动作的不同状态。
    在“状态基”中,混合空间的坐标轴会成为一个引脚,每个引脚接入事件图表中的变量进行匹配即可。

    虚幻引擎学习笔记——Month2 Week1_第8张图片
    虚幻引擎学习笔记——Month2 Week1_第9张图片
    虚幻引擎学习笔记——Month2 Week1_第10张图片
    虚幻引擎学习笔记——Month2 Week1_第11张图片
    虚幻引擎学习笔记——Month2 Week1_第12张图片

  • 实现:按下Shift键角色加速跑
    一般设置慢跑速度为3.75m/s;加速跑速度为6.00m/s
    虚幻引擎学习笔记——Month2 Week1_第13张图片
    虚幻引擎学习笔记——Month2 Week1_第14张图片
    虚幻引擎学习笔记——Month2 Week1_第15张图片
    虚幻引擎学习笔记——Month2 Week1_第16张图片
    虚幻引擎学习笔记——Month2 Week1_第17张图片


  1. 实现角色的跳跃功能
    是否行走:用速度是否>0判定;
    是否跳跃:用胶囊体是否离地判定
    虚幻引擎学习笔记——Month2 Week1_第18张图片
    虚幻引擎学习笔记——Month2 Week1_第19张图片
    虚幻引擎学习笔记——Month2 Week1_第20张图片
    虚幻引擎学习笔记——Month2 Week1_第21张图片
    虚幻引擎学习笔记——Month2 Week1_第22张图片
    虚幻引擎学习笔记——Month2 Week1_第23张图片
    虚幻引擎学习笔记——Month2 Week1_第24张图片
    虚幻引擎学习笔记——Month2 Week1_第25张图片
    (动画蓝图中有一个规定:节点的结果只有为“真”时,才可以向下进行)
    虚幻引擎学习笔记——Month2 Week1_第26张图片





Day2

处理具有问题的人物模型

  1. 跟往常一样先创建一个BP_Character02,在此处我们不直接使用完整的人物模型了,这次采用将模型组件拼装起来的方式:


  2. 在构建脚本(Construction Script)中,将人物的模型组件与动画蓝图进行绑定。注意:不同骨骼的组件进行绑定时,需要将插槽变量的默认值改为正确位置所在的插槽名称。
    虚幻引擎学习笔记——Month2 Week1_第27张图片
    (执行顺序:构建脚本(Construction Script) > Event BeginPlay > Even Tick)


  3. 测试人物行走的状态,找到合适的行走速度

虚幻引擎学习笔记——Month2 Week1_第28张图片
虚幻引擎学习笔记——Month2 Week1_第29张图片

  1. 方式一:
    修正行走状态下进行跳跃,落地时脚会滑一下的Bug(这个Bug是Idle状态的动画)
    解决思路:增加一个速度判断,因为人物行走时的速度是>0的,与原地跳跃的速度=0 不同
    当行走速度>0时,就会走下面的这个条件,上面的0.2秒过渡就不执行了,这样从跳跃状态融合到行走状态的过渡时间也就减少了。此外,在PlayerMove状态中,人物由Idle状态转至Walk状态的条件就是判断速度是否>0,人物行走状态下刚好满足,所以其从跳跃状态融合转换到PlayerMove状态下的Idle的转换时间可以很大幅度优化,会很快速的转到Walk状态动画,这样由Idle状态动画造成的“滑一下脚”的Bug就会得到很好的改善。
    虚幻引擎学习笔记——Month2 Week1_第30张图片


    方式二:动画融合

    虚幻引擎学习笔记——Month2 Week1_第31张图片
    虚幻引擎学习笔记——Month2 Week1_第32张图片
    虚幻引擎学习笔记——Month2 Week1_第33张图片

  2. 利用“同步组”,解决:从Walk状态切换为Run状态时的“左右脚问题”——无论Walk状态下迈哪只脚进入Run状态,都会自然的迈下一只脚开始Run。反之,由Run状态返回Walk状态也是如此。
    虚幻引擎学习笔记——Month2 Week1_第34张图片
    虚幻引擎学习笔记——Month2 Week1_第35张图片
    虚幻引擎学习笔记——Month2 Week1_第36张图片

  3. 为人物佩戴武器,并设置相应动画
    1、首先创建“BP_Weapon”武器蓝图(武器,尤其是枪械武器做好做成蓝图)
    2、为角色佩戴武器时,不要直接将武器蓝图拖拽到角色蓝图模型上。正确的做法是利用蓝图节点在角色蓝图中生成(Spawn Actor From Class)该武器。
    3、将武器绑定到角色的插槽上
    虚幻引擎学习笔记——Month2 Week1_第37张图片
    4、设置“持武器”动画
    (状态基常用于:重复性、循环次数比较高的动作的融合。eg. 走、跑、跳。
    重复性不太高的,常用蒙太奇。其一、因为可以作为一个独立的文件去使用;其二、很多偏技能 的动作是根运动。eg.开枪、技能、捡枪、捡东西)
    1、首先创建动画蒙太奇(AnimMontage_Character02Equip)

    2、将蒙太奇中要使用的动画拖到蒙太奇插槽轨道上
    虚幻引擎学习笔记——Month2 Week1_第38张图片
    3、为动画指定蒙太奇插槽
    虚幻引擎学习笔记——Month2 Week1_第39张图片
    虚幻引擎学习笔记——Month2 Week1_第40张图片
    4、在动画蓝图中通过插槽调用蒙太奇动画
    虚幻引擎学习笔记——Month2 Week1_第41张图片


    蒙太奇使用步骤:
    1- 创建动画蒙太奇文件并将动画拖到插槽轨道上
    2- 创建插槽,并为动画指定插槽
    3- 在动画蓝图中将插槽调出来(Slot节点)


  1. 前面已创建了“掏出武器蒙太奇动画”,在此,我们再创建一个“收回武器蒙太奇动画”
    虚幻引擎学习笔记——Month2 Week1_第42张图片

  2. 设置键盘Q键为“掏出、放回武器”的控制键,并在BP_Character中进行蓝图编写,控制掏出、放回武器蒙太奇动画的播放
    虚幻引擎学习笔记——Month2 Week1_第43张图片
    虚幻引擎学习笔记——Month2 Week1_第44张图片





Day3

对有问题的角色模型进行最后一点点改进

虚幻引擎学习笔记——Month2 Week1_第45张图片
虚幻引擎学习笔记——Month2 Week1_第46张图片



为角色添加攻击(Attack)动画
  1. 创建蒙太奇动画,将攻击动画在其中设置好。然后设置,当点击鼠标左键时,角色执行攻击动画。
    虚幻引擎学习笔记——Month2 Week1_第47张图片虚幻引擎学习笔记——Month2 Week1_第48张图片
    虚幻引擎学习笔记——Month2 Week1_第49张图片
    虚幻引擎学习笔记——Month2 Week1_第50张图片
    虚幻引擎学习笔记——Month2 Week1_第51张图片

  2. 为角色设置:当角色行走时攻击(该角色没有行走时攻击的动画)。即,将角色攻击状态的上半身与角色行走时的下半身进行拼接,形成“行走时攻击动画”。
    虚幻引擎学习笔记——Month2 Week1_第52张图片
    (上图中:勾选右侧的“模型空间旋转融合”(Mesh Space Rotation Blend)会让希望拼接的动作的扭曲幅度更大,更接近原来的扭曲状态)


  3. 为人物添加攻击时的特效。首先,新建蓝图,在其中放置特效并进行设置。
    虚幻引擎学习笔记——Month2 Week1_第53张图片
    虚幻引擎学习笔记——Month2 Week1_第54张图片
    虚幻引擎学习笔记——Month2 Week1_第55张图片

  1. 将攻击特效绑定在手上的插槽位置,当发出攻击动作时,该特效在手部生成并释放出去
    虚幻引擎学习笔记——Month2 Week1_第56张图片
    虚幻引擎学习笔记——Month2 Week1_第57张图片
    虚幻引擎学习笔记——Month2 Week1_第58张图片

  2. 攻击动画碰到场景中的模型时,令其消失,同时生成一个消失动画
    虚幻引擎学习笔记——Month2 Week1_第59张图片



Day 4

碰撞:“碰撞”指的是两个对象之间的关系。


虚幻引擎学习笔记——Month2 Week1_第60张图片
虚幻引擎学习笔记——Month2 Week1_第61张图片

  1. 从“是否带有骨骼”的角度划分,模型被分为:静态网格体/模型、骨骼网格体/模型
  2. 从“动态/静态。即,模型是否为运动的”的角度划分,模型又被分为:静态模型(WorldStatic)、动态模型(WorldDynamic)
  3. “碰撞”指的是两个对象之间的关系,但主要是指模型之间的关系。光、雾等无碰撞。



增加AI小怪兽
  1. 制作怪兽模型,并为其绑定动画


    虚幻引擎学习笔记——Month2 Week1_第62张图片
    虚幻引擎学习笔记——Month2 Week1_第63张图片
    虚幻引擎学习笔记——Month2 Week1_第64张图片
    虚幻引擎学习笔记——Month2 Week1_第65张图片
    虚幻引擎学习笔记——Month2 Week1_第66张图片

  2. 想让AI行走,第一步就是要在场景中添加“导航(Nav Mesh Bounds Volume)”
    Nav Mesh Bounds Volume为二维平面,只能将AI导地面(二维),不能导空中(三维)



  3. 取消 “玩家角色模型” 和 “AI怪兽模型” 的碰撞,以此防止两对象相碰时,将对方挤飞
    (保留其胶囊体的碰撞和射线检测,并将其类型设为AI)
    虚幻引擎学习笔记——Month2 Week1_第67张图片
    虚幻引擎学习笔记——Month2 Week1_第68张图片
    虚幻引擎学习笔记——Month2 Week1_第69张图片
    虚幻引擎学习笔记——Month2 Week1_第70张图片
    虚幻引擎学习笔记——Month2 Week1_第71张图片
    虚幻引擎学习笔记——Month2 Week1_第72张图片
    (AI添加思路:想要加入AI,就要有AI的蓝图,有了AI的蓝图就需要由相应的AI动画蓝图来绑定AI蓝图中的模型组件,令其移动。为了让AI不只是被攻击,还要有攻击,就需要加入动画蒙太奇。为了让AI在场景中移动,则需要添加行为树。希望看到血量的减少,就需要加入UI。希望UI在头顶出现,就需要加入3D UI。玩家被攻击时的伤害——自己的UI。希望看清当前的位置——小地图

  4. 为AI怪物添加行为树
    行为树:相当于大脑,用于发出指令。
    控制器:用于执行行为树发出的指令。
    黑板:用于存放数据。行为树只用来发布指令,其所有的数据都存在黑板中。
    AI角色:行为树调用的前提就是要先有一个AI角色蓝图。
    (行为树+黑板=脑子=指令+数据)
    (三步走:将控制器挂在角色上、将行为树挂在控制器里、把黑板挂在行为树里)
    虚幻引擎学习笔记——Month2 Week1_第73张图片
    虚幻引擎学习笔记——Month2 Week1_第74张图片
    虚幻引擎学习笔记——Month2 Week1_第75张图片
    虚幻引擎学习笔记——Month2 Week1_第76张图片

5. 知识补充:行为树中的节点
选择合成器(Selector):只选择其下方的一个节点执行,采用“一夫一妻制”。当左侧的节点成功时,右侧的节点就不再执行了。
序列合成器(Sequence):只有当左侧节点成功时,右侧节点才会执行。


6. 在行为树中为AI角色添加一个“行走功能”。其思路为:需要先找到一个位置,然后让AI角色从此位置出发行走。所以需要在第一个任务节点成功的前提下,第二个任务再执行,所以就要用Sequence。
(在行为树中,官方提供了MoveTo节点,用于AI移动。所以我们只需要再创建一个“选择位置”的任务即可)
虚幻引擎学习笔记——Month2 Week1_第77张图片
虚幻引擎学习笔记——Month2 Week1_第78张图片
虚幻引擎学习笔记——Month2 Week1_第79张图片
虚幻引擎学习笔记——Month2 Week1_第80张图片
虚幻引擎学习笔记——Month2 Week1_第81张图片
(上述图片:行为树任务与黑板无直接关系,且当有多个黑板时,我们无法直接将行为树指定给某个特定的黑板。所以我们需要行为树转一下手,将数据给到黑板,因为每个行为树绑定着相对应的黑板)
虚幻引擎学习笔记——Month2 Week1_第82张图片

  1. 为AI添加监听,让AI能够在一定范围内检测到玩家,从而执行相应的任务
    虚幻引擎学习笔记——Month2 Week1_第83张图片
    虚幻引擎学习笔记——Month2 Week1_第84张图片


  2. 设置:当玩家角色进入AI监听范围时,AI不动;当玩家离开AI监听范围时,AI移动。
    虚幻引擎学习笔记——Month2 Week1_第85张图片
    虚幻引擎学习笔记——Month2 Week1_第86张图片
    虚幻引擎学习笔记——Month2 Week1_第87张图片



Day5

  1. 为玩家角色添加标签(Tag),当场景中有多个AI时,令其只检测玩家角色不检测AI同伴
    虚幻引擎学习笔记——Month2 Week1_第88张图片

  2. 在黑板中设置相应的变量,存储AI监测到的玩家角色的位置信息
    虚幻引擎学习笔记——Month2 Week1_第89张图片

  3. 在AIController中书写蓝图逻辑
    虚幻引擎学习笔记——Month2 Week1_第90张图片

  4. 在行为树中添加MoveTo任务节点,并为其绑定黑板中的变量
    虚幻引擎学习笔记——Month2 Week1_第91张图片


  1. 为行为树绑定AI攻击动画

    虚幻引擎学习笔记——Month2 Week1_第92张图片
    虚幻引擎学习笔记——Month2 Week1_第93张图片
    虚幻引擎学习笔记——Month2 Week1_第94张图片
    虚幻引擎学习笔记——Month2 Week1_第95张图片
    虚幻引擎学习笔记——Month2 Week1_第96张图片
    虚幻引擎学习笔记——Month2 Week1_第97张图片
    虚幻引擎学习笔记——Month2 Week1_第98张图片

  1. 添加动画通知,并在动画蒙太奇相应位置处绑定该通知(斧头)。在动画通知中书写蓝图逻辑,以BP_EnemyKobold的蓝图中心点大致推算出攻击时的斧头位置,并以该位置点为中心,50cm为半径范围进行检测。

    虚幻引擎学习笔记——Month2 Week1_第99张图片
    虚幻引擎学习笔记——Month2 Week1_第100张图片
    虚幻引擎学习笔记——Month2 Week1_第101张图片

  2. 创建3D UI
    虚幻引擎学习笔记——Month2 Week1_第102张图片
    虚幻引擎学习笔记——Month2 Week1_第103张图片
    虚幻引擎学习笔记——Month2 Week1_第104张图片
    虚幻引擎学习笔记——Month2 Week1_第105张图片

  3. 互动UI:AI怪兽受到攻击时,UI血条血量减少
    虚幻引擎学习笔记——Month2 Week1_第106张图片
    虚幻引擎学习笔记——Month2 Week1_第107张图片
    虚幻引擎学习笔记——Month2 Week1_第108张图片
    虚幻引擎学习笔记——Month2 Week1_第109张图片

  4. 互动UI:玩家受到攻击时,UI血条血量减少
    虚幻引擎学习笔记——Month2 Week1_第110张图片
    虚幻引擎学习笔记——Month2 Week1_第111张图片
    虚幻引擎学习笔记——Month2 Week1_第112张图片
    虚幻引擎学习笔记——Month2 Week1_第113张图片

你可能感兴趣的:(虚幻,学习,游戏引擎)