ue4-第三人称-教程笔记8

文章讲述了如何在游戏开发中修改PlayerChar的材质以支持RootMotion动画,解决位移问题,实现连招算法,以及闪避和攻击的交互逻辑,包括自定义事件、动画通知和方向控制的调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

修改PlayerChar的材质
在这里插入图片描述
打开RootMotion

在这里插入图片描述
自带位移和没有位移的动画
在这里插入图片描述
选中Attack12
在这里插入图片描述
RootMotion中创建动画蒙太奇
在这里插入图片描述
可以修改动画蒙太奇的属性
在这里插入图片描述
绑定attack动作映射
在这里插入图片描述
PlayerChar添加DoAttack自定义事件
在这里插入图片描述
选择动画蒙太奇
在这里插入图片描述
控制器中触发DoAttack事件在这里插入图片描述
出现播放动画时返回原地的情况
为了解决这个问题, 显示胶囊体, 右侧->hidden in game 取消勾选
在这里插入图片描述

发现胶囊体的位置没有发生变化
在这里插入图片描述
在动画中取消动画的位移
在这里插入图片描述
连点时会鬼畜, 如何解决
返回值是蒙太奇播放的时间
在这里插入图片描述
添加Delay函数
在这里插入图片描述
添加isAttack变量
在这里插入图片描述
播放完就取消攻击
在这里插入图片描述

攻击时就设置正在攻击
在这里插入图片描述
判断一下是否攻击, 没有攻击就进行攻击
在这里插入图片描述
修改蒙太奇函数, 功能比上一个函数功能更多
在这里插入图片描述
播放动画完毕再执行设置
在这里插入图片描述

连招算法

连招算法之后同步

攻击转向

CalculLastInput

计算最后rotation, 获取输入的角度
playerChar->CalculLastInput函数
在这里插入图片描述

绑定到Tick事件中
在这里插入图片描述
系统自带函数与自定义函数的区别
在这里插入图片描述

SetRotationByAnim函数

作用:播放动画的时候改变角度
在这里插入图片描述
添加参数
IsInterp
InterpSpeed
解释:interp渐变

在这里插入图片描述
RInterpTo函数解释
在这里插入图片描述

创建动画通知触发SetRotationByAnim

创建动画通知文件夹AnimNotify
在这里插入图片描述
创建蓝图父类选AnimNotifyState
在这里插入图片描述
重命名为RotationByAnim
在这里插入图片描述
创建两个变量
InterpSpeed
在这里插入图片描述

动画通知蓝图概览
在这里插入图片描述

重载函数

GetNotifyName()
返回通知名称
在这里插入图片描述

输入PlayerRotation
在这里插入图片描述
打开Combo_01_Montage
添加通知
在这里插入图片描述

在新增的通知上添加通知状态
在这里插入图片描述
添加结果
在这里插入图片描述
原理解释:
在这里插入图片描述
这个区间内可以转向, 区间外禁止转向.

注意此处有动画通知状态的参数显示
在这里插入图片描述
设置渐变速度参数为10
在这里插入图片描述

为所有蒙太奇添加通知状态
在这里插入图片描述
如下
在这里插入图片描述

再重载两个函数

Recived_NotifyEnd
Recived_NotifyTick
在这里插入图片描述

通知实现, 蓝图绘制
在这里插入图片描述
此处攻击转向完成

伤害

为Combo_01添加通知输入名称PlayerHit
在这里插入图片描述
攻击到此时产生一个球形检测
在这里插入图片描述

再添加一个相同的通知PlayerNotify
下一次可以从骨架通知中找到之前的通知
在这里插入图片描述
添加类似四个动画通知
在这里插入图片描述

PlayerChar创建自定义事件DoPlayerHit(检查伤害事件)

在这里插入图片描述
创建球形检测, 并提升变量
在这里插入图片描述
完整蓝图
在这里插入图片描述

动画通知
在这里插入图片描述

处理伤害事件
在这里插入图片描述

创建球形碰撞检测, 设置默认值为Pawn
在这里插入图片描述

两处相差正好是球的半径
在这里插入图片描述

在动画蓝图PlayerCharABP中使用动画通知PlayerHit

触发自定义的DoPlayerHit事件
在这里插入图片描述

修改成长柄武器

添加一个圆柱Cylinder
在这里插入图片描述
调整为如下
在这里插入图片描述
将胶囊体隐藏
在这里插入图片描述
到此伤害已经处理完毕

闪避

添加一个动作映射
在这里插入图片描述
找到翻滚动画
在这里插入图片描述
通过动画创建动画蒙太奇
在这里插入图片描述
为滚动动画开启EnableRootMotion
在这里插入图片描述
创建自定义事件DoRoll
在这里插入图片描述
在PlayerController中绑定键盘Roll事件
在这里插入图片描述
但是这样连续按shift键会连续重复滚动动画
为了解决这个问题,
添加IsRoll变量做是否正在滚动的判断, 同时修改montage的play rate为1.3
在这里插入图片描述

闪避时改变方向

为闪避蒙太奇添加通知状态
在这里插入图片描述
拉满, 这样闪避的过程中可以改变方向
在这里插入图片描述
修改弹簧臂的长度为400, 为了看清闪避时改变方向的效果
在这里插入图片描述

攻击时按闪避后无法攻击bug修复

因为攻击开启设置IsAttack变量为true, 但是在攻击过程中, 被闪避动画打断,导致IsAttack没有被恢复为false, 导致无法攻击.
在闪避蓝图中, 触发ComboReset事件, 将攻击状态还原.
在这里插入图片描述

滚动时不攻击

在这里插入图片描述

闪避时不受伤害(待完成)

自定义函数

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值