UE4 第三人称Game制作

1.导入mesh和Animation

mesh导入
Animation导入



2.设置角色按键控制

项目设置



3.赋予材质(可有可无)

材质节点



4.混合空间——Blend Spaces

一维混合空间原理
二维混合空间原理


1D blend space

选择骨架,轴名称为speed,最大值为375,将idle,walk,run拖拽到轴上



5.动画蓝图

新建动画蓝图



6.状态机——State Machines

优酷LG堂介绍状态机器的使用- Intro to State Machines


原理

在动画蓝图里添加状态机

新建状态机
完成idle_walk_run状态

添加Jump 状态

分别设置JumpStart,JumpLoop,JumpEnd中的状态和条件

播放动画
Is In Air?判断是否执行下一个动作(JumpStart)
播放JumpLoop动画
Loop条件

由Start→Loop的条件是near end of start Animation

这个节点将动画时间比例化,从1到0。

所以当动画的比例小于0.1的时候,播放Loop的动画。

JumpEnd动画
End执行条件

最后一个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.设置角色蓝图

创建角色蓝图


设置mesh并调整方向,选择动画蓝图
通过调整shape来尽量包裹角色
修改一些动作的参数(这里保持默认)
添加spring Arm组件
上移大约致胸部
添加摄像机
回到类默认值,取消勾选
勾选Orient  Rotation to Movement

9.创建角色的键盘和鼠标控制

CharacterBP

添加MoveForward事件

添加add Movement Input节点与MoveForward连接

添加GetActorRotation节点,获取角色的旋转值

添加Break Rotator打断旋转(将旋转细分)


pitch yaw roll

pitch俯仰角

yaw偏航角

roll翻滚角

鼠标的移动会使这三个角发生变化,在角色行走的时候只需要用到Yaw,Yaw控制角色的朝向

Make Rotator节点是为了让,pitch,row归零,只输出偏航角

利用GetForward Vector节点输出向前的向量

连接MoveRight事件

选中所有节点按C键,添加注释为Mouse movement input


Mouse movement input
Mouse Input
Jump

10.游戏模式与按键操控测试

新建Game Mode蓝图命名为MyGame
设置为CharacterBP
设置为刚创建的MyGame
项目设置

在项目设置里选择地图&模式

将Defualt GameMode 设置为 MyGame

测试没有问题

(我觉得反转视角的操作有点反人类,就不写了,很简单只需要把项目设置中的LookUp设置为-1就行,还有手柄和触摸屏也不介绍了)


10.动作蒙太奇Animation Montage

Animation Montage 可以用现有的动作组合成新的动作

把已有的动作重复播放(使用),有选择的播放需要的动画

例如:霰弹枪上弹操作,打开枪膛,装填+装填+装填……,合上枪膛。装填就是一个重复的动作,运用动作蒙太奇可以根据子弹数量来设置装填动作的循环次数

我们将要制作的是打拳Punching的蒙太奇,五个素材分别是:

Punchstart,Punch1(出右拳),Punch2(出左拳),PunchEnd1(收右拳),PunchEnd2(收左拳)

按住鼠标左键不放,PunchStart→Punch1→Punch2→Punch1→Punch2→Punch1→Punch2……

松开后要进行判断此时出拳的动作是Punch1还是Punch2,来执行相应的结束动作


11.骨骼对位Skeleton Retargeting

创建动作蒙太奇,命名为PunchMontage


发现动作有些错位拉伸扭曲
在根骨root处右键
如图设置
将五个动作拖放致Montage

给动画分段:

新建蒙太奇片段


清理片段


PunchStar→Punch1→Punch2循环

解释一下这步操作,点击第一行的PunchStart,变黄色,点击上面的Punch1,点击第一行的Punch1,点击上面的Punch2,点击第一行的Punch2,点击上面的Punch1,这是系统自动识别我们需要Punch1,Punch2循环

通知栏右键
设置两个通知的Montage Tick Type

(这一块我并不是十分理解)

Rate Scale可以设置动作的速率(这里我保持不变)
新建插槽

12.使用动作蓝图设置角色击拳

在CharacterBP中编辑:

创建Punch事件
新建变量命名为IsPunching?
连接

打开Character Animation BP(动画蓝图)

新建布尔型变量,跟我们角色蓝图里命名一样IsPunching?

现在需要获取并设置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.实现蒙太奇动作的运行

在角色动画蓝图中

添加一个自定义事件,命名为Punch


In Play Rate节点同样可以蒙太奇播放的速度

如图连接

IsPunching?为真 时执行do once节点(该节点目的是只执行一次,如果直接连接到Punch节点上,会导致点击鼠标左键后,一直重复执行Punch动作)

IsPunching?为假 时重置

在蓝图中添加蒙太奇通知事件

添加分支

获取 IsPunching? 的值

连接Montage Set Next Section节点

当数据为假时,连接Montage Set Next Section节点,依次判断结束动作

接下来设置动画图表,实现对蒙太奇数据的调用

右键添加插槽
设置为蒙太奇插槽的名字UpperBody

运行发现,角色在移动过程中拳击,无跑步姿势

在动画图表中

添加layered blend per bone节点
如图连接
设置Bone Name 为spince_01

locomotion不能同时连接到Base Pose和UpperBody上

新作缓存姿势命名为LocomotionCash
使用缓存姿势
连接

14.添加击拳物理判定

打开CharacterBP视口

添加球形碰撞
如图调整大约包裹手部
修改碰撞预设为NoCollision

创建脚本

将两个碰撞体拖入屏幕

添加attach to节点,选择AttachToComponent,把mesh拖入屏幕,连接

设置规则为snap to target吸附到目标上


Punch R同理

回到事件图标中

通过IsPunching?变量来判断是否开启物理碰撞

为真开启,为假关闭
在场景中放置一个球体,打开物理模拟

如果感觉角色没有紧贴地面,可以在角色蓝图中调整Mesh的高度




嗯~~~~~~

到这里基本上第三人称的角色就创建完成了。还有一些跑步特效的设置就不写了,可以看下面的两个视频。

最后附上视频地址

1.优酷视频:LG堂的中文教程

http://i.youku.com/i/UMzE2NzI4ODM2/custom?spm=a2hzp.8250547.0.0&id=247610&order=2&page=1&last_item=&last_pn=2&last_vid=354040433

2.B站UP主GameLemur转载的官方视频Epic Games 3rd Person Game with Blueprints

https://www.bilibili.com/video/av8934812/index_17.html#page=1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335