每个项目必备这三个
GameModel(游戏模式-具体体现)
{
Default Pawn Class(控制的物体)
PlayerController(玩家控制器,去控制pawn)
Hud (UI管理器)
Game Start Class(游戏状态值(装备,排行榜))
Player Start Class(玩家状态(血量))
SpectaterClass(旁观者)
}
然后在关卡里设置,点开世界场景设置,将刚刚创建的三个添加到该场景里去。
2、摄像机
摄像机会把他设置在Pawn(玩家控制的物体上)
简单教程:
https://www.bilibili.com/video/BV1RE411A73u ,
https://www.bilibili.com/video/BV1yy4y1J72X
注意要把Pawn放置到场景中然后把控制的玩家设置为0
编辑其BP_Explorer_Player蓝图
添加需要的事件:
1、滚轮改变d簧臂长度
触发事件
监听事件
关于引擎输入
如果你需要分类输入事就可以用 *** 作映射如果想要通过方向性输入比如W前进S后退就可以通过轴映射(在一条轴上的事件W为1和S为-1)(其实就是代指名字,没有实质性功能)
2、按住左键旋转摄像头
触发事件
限制进入地下(可以进一步优化,现在还很生硬)
3、按住右键平移摄像头
到此最简单的摄像机控制就完成了
本次我们通过自定义事件,来让小人进入一个区域得到加速,在离开区域的时候失去加速。其中用到自定义事件,蓝图通信和类型转换。下面大家跟着看图说话:
1: 我们先在世界大纲中点编辑第三人称蓝图:
2:在我的蓝图中,新增,新加加速图表,并在里面右键 添加自定义事件:
3: 事件起名为触发加速Event,并把角色的移动拉到蓝图中,对最大行走速度来设置。
最后把Max Walk Speed拉给事件,这样触发事件的时候需要输入参数。
4:接下来我们在碰撞事件中转换对象和触发该事件。
我们借用之前的出发开门的蓝图,转换对象和触发事件如图:
这样,只有第三人称的角色对象碰撞到本碰撞体时,就会执行触发事件到角色对象上,看图说话:设置对象的最大行走速度为1000.
这样,我们的蓝图之间的通信就完成了。我们的角色就可以健步如飞了~
1.导入mesh和Animation2.设置角色按键控制
3.赋予材质(可有可无)
4.混合空间——Blend Spaces
选择骨架,轴名称为speed,最大值为375,将idle,walk,run拖拽到轴上
5.动画蓝图
6.状态机——State Machines
优酷LG堂 介绍状态机器的使用- Intro to State Machines
在动画蓝图里添加状态机
添加Jump 状态
分别设置JumpStart,JumpLoop,JumpEnd中的状态和条件
由Start→Loop的条件是near end of start Animation
这个节点将动画时间比例化,从1到0。
所以当动画的比例小于0.1的时候,播放Loop的动画。
最后一个JumpEnd→Idle_walk_run同理start→Loop
这时候通过测试
发现动作不连贯,调整ratio判断的值,这里我设置为0.5和0.8,动作流畅。
7.在动作蓝图里创建事件图表
Event Blueprint Update Animation节点用于对所有的动画数据进行调用和更新
Is Valid节点,检查是否有效,再往下执行(这一步我理解就是类似程序执行前的检查)
Try Get Pawn Owner节点,用于检测是什么物体正在被 *** 控
Get Movement Component 获得角色动作的数据比如,走,跑,飞……
Is Falling判断是否处于空中
Get Velocity 节点获取速度(矢量,方向+数值),向量长度表示速度speed
Vector Length 获取长度,连到speed
8.设置角色蓝图
9.创建角色的键盘和鼠标控制
添加MoveForward事件
添加add Movement Input节点与MoveForward连接
添加GetActorRotation节点,获取角色的旋转值
添加Break Rotator打断旋转(将旋转细分)
pitch俯仰角
yaw偏航角
roll翻滚角
鼠标的移动会使这三个角发生变化,在角色行走的时候只需要用到Yaw,Yaw控制角色的朝向
Make Rotator节点是为了让,pitch,row归零,只输出偏航角
利用GetForward Vector节点输出向前的向量
选中所有节点按C键,添加注释为Mouse movement input
10.游戏模式与按键 *** 控测试
在项目设置里选择地图&模式
将Defualt GameMode 设置为 MyGame
测试没有问题
(我觉得反转视角的 *** 作有点反人类,就不写了,很简单只需要把项目设置中的LookUp设置为-1就行,还有手柄和触摸屏也不介绍了)
10.动作蒙太奇Animation Montage
Animation Montage 可以用现有的动作组合成新的动作
把已有的动作重复播放(使用),有选择的播放需要的动画
例如:霰dq上d *** 作,打开q膛,装填+装填+装填……,合上q膛。装填就是一个重复的动作,运用动作蒙太奇可以根据子d数量来设置装填动作的循环次数
我们将要制作的是打拳Punching的蒙太奇,五个素材分别是:
Punchstart,Punch1(出右拳),Punch2(出左拳),PunchEnd1(收右拳),PunchEnd2(收左拳)
按住鼠标左键不放,PunchStart→Punch1→Punch2→Punch1→Punch2→Punch1→Punch2……
松开后要进行判断此时出拳的动作是Punch1还是Punch2,来执行相应的结束动作
11.骨骼对位Skeleton Retargeting
创建动作蒙太奇,命名为PunchMontage
给动画分段:
解释一下这步 *** 作,点击第一行的PunchStart,变黄色,点击上面的Punch1,点击第一行的Punch1,点击上面的Punch2,点击第一行的Punch2,点击上面的Punch1,这是系统自动识别我们需要Punch1,Punch2循环
(这一块我并不是十分理解)
12.使用动作蓝图设置角色击拳
在CharacterBP中编辑:
打开Character Animation BP(动画蓝图)
现在需要获取并设置IsPunching?的值
但是我们现在无法直接通过Get Pawn Owner节点获取它的IsPunching?的值
需要用到Cast to 节点
官方文档中写道:
在 蓝图 中使用 Cast To 节点时,简单而言,就是在尝试检查发出转换的对象是否为被转换的特定对象。换言之,您创建了一个特殊的角色蓝图(如名为 MyCharacter),其中包含变量或其他自定义功能,并将其作为默认 Pawn 类(或所有玩家角色默认使用的角色蓝图)指定。
如需从另一个蓝图访问玩家角色的属性,可使用 Get Player Character 节点以常规方式(设置/获取其位置、旋转灯)对玩家角色产生影响,但无法访问已添加到 MyCharacter 蓝图的自定义功能,因为您获取的是玩家角色而非特定类型的角色。
使用 Get Player Character 节点,再使用 Cast To MyCharacter 节点(特殊的角色蓝图),即可确认玩家角色是否为 MyCharacter,以便访问该蓝图中所包含的变量、函数、事件或其他特殊功能。
这里我们需要从CharacterBP中获取IsPunching? 的值
13.实现蒙太奇动作的运行
在角色动画蓝图中
In Play Rate节点同样可以蒙太奇播放的速度
IsPunching?为真 时执行do once节点(该节点目的是只执行一次,如果直接连接到Punch节点上,会导致点击鼠标左键后,一直重复执行Punch动作)
IsPunching?为假 时重置
在蓝图中添加蒙太奇通知事件
获取 IsPunching? 的值
当数据为假时,连接Montage Set Next Section节点,依次判断结束动作
接下来设置动画图表,实现对蒙太奇数据的调用
运行发现,角色在移动过程中拳击,无跑步姿势
在动画图表中
locomotion不能同时连接到Base Pose和UpperBody上
14.添加击拳物理判定
打开CharacterBP视口
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)