Actor的动画状态可能有几种idle,run,walk,skill,而skill中由又有几种不同的技能动作,要做进步一控制,这里只是提供一种思路,利用动画蓝图里的 conduit 节点,减少大量重复性的 state(比如某一状态到n种技能状态的切换)。


先来看看总体的动画蓝图(Animation Blueprint)



1、先写个继承自 UAnimInstance 的基类 UMyAnimInstance

UMyAnimInstance.h

#include "../CharTypes.h"
#include "../Skill/SkillTypes.h"
#include "MyAnimInstance.generated.h"class AMyChar;
class USkillTemplate;
class UMyAnimInstance;DECLARE_DELEGATE_OneParam(FStateNotify, CharState); UCLASS()
class UMyAnimInstance : public UAnimInstance
{GENERATED_BODY()public:UMyAnimInstance();virtual ~UMyAnimInstance();UFUNCTION(BlueprintCallable, Category = "UMyAnimInstance")AMyChar* GetOwnerChar();virtual void NativeUpdateAnimation(float DeltaSeconds) override;
public:UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "UMyAnimInstance")AMyChar*    mOwnerChar;UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "UMyAnimInstance")float       mSpeed;UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "UMyAnimInstance")CharState   mCharState; //控制角色动画的枚举UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "UMyAnimInstance")EAnimType   mAnimType; //各种技能动画的枚举,在技能状态下细分各种技能FStateNotify    mStateDlg;
};

UMyAnimInstance.cpp

UMyAnimInstance::UMyAnimInstance()
{mOwnerChar = nullptr;mSpeed = 0.f;mCharState = CharState::IdleRun;mAnimType = EAnimType::None;mStateDlg.BindLambda([&](CharState _state)->void {mCharState = _state;});
}UMyAnimInstance::~UMyAnimInstance()
{}AMyChar* UMyAnimInstance::GetOwnerChar()
{if (!mOwnerChar){APawn* owner = TryGetPawnOwner();mOwnerChar = owner ? Cast<AMyChar>(owner) : nullptr;}return mOwnerChar;
}void UMyAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
{Super::NativeUpdateAnimation(DeltaSeconds);if (mOwnerChar == nullptr){mOwnerChar = GetOwnerChar();}if (mOwnerChar != nullptr){   //TODO: 待优化,不变时不需要去getmSpeed = mOwnerChar->GetVelocity().Size(); //设置速度USkillFunction* skillFunc = mOwnerChar->GetUsingSkill(); //正在使用的技能USkillTemplate* skillTemp = skillFunc != nullptr ? skillFunc->GetSkillTemplate() : nullptr;mAnimType = skillTemp != nullptr ? skillTemp->mAnimType : EAnimType::None; //设置动画类型}
}

2、创建个 蓝图对象 继承自 UMyAnimInstance

选择父类 MyAnimInstance,(u是命名规则被省去了),选择 fbx 动画


3、动画蓝图的各种状态描述,只要是使用conduit这个节点


4、然后就可以通过这两个变量来控制动画

        CharState   mCharState;EAnimType   mAnimType;

具体看上面的代码,在这个函数里

void UMyAnimInstance::NativeUpdateAnimation(float DeltaSeconds)

ue4 中动画控制,利用conduit节点相关推荐

  1. ue4中空间变换之位移节点对比总结大全

    ue4中空间变换之位移节点对比总结大全 ue4中位移的节点有很多,可能刚学习的小伙伴会有一些疑问,我花了一些时间把一些有位移功能的节点进行对比,总结一下. 一: 偏移 首先讲一偏移,偏移其实实现的功能 ...

  2. UE4中动画优化与压缩

    动画优化 在虚幻引擎中使用动画压缩是为了减少在游戏中使用动画时骨架动画数据占用的内存量.可以使用多种方法完成动画压缩: 删除关键帧 - 很多动画都具有平滑变化的动作,其中包含可以在没有明显影响动作整体 ...

  3. UE4蓝图流程控制:FlipFlop节点、DoOnce节点的使用

    关于流程控制节点的使用,详情查看官方文档: https://docs.unrealengine.com/4.27/zh-CN/ProgrammingAndScripting/Blueprints/Us ...

  4. ue4小白人骨骼定义_动画短片在UE4中的工作流程都有哪些?来看游戏建模师如何分析的...

    CG摄影师兼导演Jeffy Zachariah谈到了他的动画短片WAKE的制作:在UE4中与Sequencer合作,摄像机设置,资产制作等. 想法 将动画视为通过运动说出来的故事或表情,甚至可以只通过 ...

  5. ue4蓝图节点手册中文_在UE4中播放视频

    简介: 在日常使用UE4做项目时,会遇到在UE4里播放视频文件的需求,在UE4中可以使用媒体框架(Media Framework)来实现这一功能.这里介绍两种简单的方法来使用这一功能,分别是在场景里播 ...

  6. 在UE4中创建CG动画 How to create a movie in Unreal Engine 4 using Metahuman

    MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:1.55 GB |时长:1h 16m 你会学到什么 如何在 ...

  7. ue4材质节点大全_转载于知乎:UE4 多象限(UDIM)贴图在UE4中的应用

    各位小伙伴早上好啊!真的又隔了很久才再次见面..这次是工作上一个同事在网上看到了一篇有意思的文章分享给我,觉得这种方式确实挺有意思,反正我是之前没有这么去考虑过.希望能够给大家带来一点启发!! 此文章 ...

  8. ue4中面部动画制作视频教程 Facial Animation More In Unreal Engine 4

    ue4中面部动画制作视频教程 Facial Animation & More In Unreal Engine 4 时长4h 包含项目文件 1920X1080 MP4 大小解压后:5.75G ...

  9. jquery 控制frameset frame节点内容(在子窗口中把该窗口中的焦点处的text内容填

    2019独角兽企业重金招聘Python工程师标准>>> 现在做这个项目中,有一项把:在子窗口中把该窗口中的焦点处的text内容填入其它子窗口的input内,也就是改写input的va ...

  10. UE4中播放动画蒙太奇Montage

    蒙太奇动画可以播放一些自定义的序列,那么随着本文来梳理一下蒙太奇如何使用的. 1.在动画蓝图中设置Slot 动画蓝图面板里,左边有EventGraph和AnimGraph,打开AnimGraph添加节 ...

最新文章

  1. 【超详细】DBCP连接池配置参数说明
  2. python redis处理高并发-Python高并发解决方案实现过程详解
  3. WebLogic下载地址
  4. TensorFlow 1.0正式发布
  5. c++ select函数_PySpark 操作函数一览
  6. threadpoolexecutor参数_ThreadPoolExecutor的使用
  7. 请注意调整好自己的心态
  8. 因遭做空机构指控存在金融欺诈 法拉第未来聘请律所展开调查
  9. 读书笔记——数据压缩入门(柯尔特·麦克安利斯)下
  10. gradle for androidstudio 各版本下载地址
  11. 什么是单反相机?什么叫数码相机?
  12. Ubuntu 安装 typora
  13. 4个mos管驱动的全桥电路原理_逆变器工作原理
  14. Oracle ORA-00119和ORA-00132的解决方案
  15. Http405错误,方法类型也没有错,解决办法
  16. excel表格的函数公式大全
  17. Deep Learning Chapter02:Python基础语法回顾
  18. Flutter 全局弹窗
  19. 用T5UIC1 4.3寸串口屏做动画
  20. IDEA中建包的时候如何才能把包分开

热门文章

  1. 5分钟_SpringBoot集成ES实现存储、查询
  2. oracle时间某年某月某日,sql getdate 咋办分享Sql的getDate()用法
  3. 使用Kuboard spray部署Kubernetes 1.24.3 集成Harbor私有镜像库
  4. Cobbler批量安装操作系统配置实战
  5. 【深度学习计算机视觉实战】给深度学习计算机视觉初学者的学习和求职建议,这个行业还缺人
  6. 如何提高自己的学习能力(JAVA篇)
  7. 旗舰手机的拍照芯片(上)
  8. html底部添加备案号,网站底部怎么放备案号 WordPress、CMS、discuz等常见程序添加方法...
  9. wps for linux显示系统缺失字体解决办法
  10. 办公office 2019软件有哪些