ue4c++日记7(动画蓝图)

news2024/10/6 6:01:28
		FVector Speed = Pawn->GetVelocity();//获取方向向量
		FVector xyspeed = FVector(Speed.X, Speed.Y,0);//不要z方向
		MovementSpeed = xyspeed.Size();//xy取长

        //角色是否处于下落状态
		IsJumping = Pawn->GetMovementComponent()->IsFalling();//#include "GameFramework/PawnMovementComponent.h"

 


目录

1创建动画蓝图

2C++

头文件

代码文件 

3混合空间1D

动画蓝图理解!

4混合空间2d

 5替换掉角色的动画蓝图


创建动画蓝图

添加新状态机

点开状态机

添加状态 

 点开状态

 放置动作

点编译后就能输出姿势了

状态机→状态→输出姿势


C++

选择继承谁

 

头文件

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "Animation/AnimInstance.h"
#include "NewAnimInstance.generated.h"

/**
 * 
 */
UCLASS()
class TTT_API UNewAnimInstance : public UAnimInstance
{
	GENERATED_BODY()
	
public:
	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Movement)
		float MovementSpeed;//移动速度
	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Movement)
		bool IsJumping;//跳跃状态
	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Movement)
		class APawn* Pawn;//为了获取角色信息

	//virtual void NativeInitializeAnimation() override;//原生的函数,初始化用

	UFUNCTION(BlueprintCallable, Category = AniminationProperty)//动画属性
		void UpdateAniminationProperties();
};

代码文件 

// Fill out your copyright notice in the Description page of Project Settings.


#include "NewAnimInstance.h"
#include "GameFramework/PawnMovementComponent.h"
void UNewAnimInstance::UpdateAniminationProperties()
{
	if (!Pawn)
	{
		Pawn = TryGetPawnOwner();//获取到角色
	}
	if (Pawn) {
		FVector Speed = Pawn->GetVelocity();//获取方向向量
		FVector xyspeed = FVector(Speed.X, Speed.Y,0);//不要z方向
		MovementSpeed = xyspeed.Size();//xy取长

        //角色是否处于下落状态
		IsJumping = Pawn->GetMovementComponent()->IsFalling();//#include "GameFramework/PawnMovementComponent.h"
	}
}

生成

去UE4里,

换掉类设置-类选项-父类,

右键拿出updateAniminationproperty,连上(下图) 


 

混合空间1D

 选中骨骼后,打开

制作好后

保存

使用1D混合空间

改成这样

 

点进去,把混合空间拖进来

 

 输入不同速度,编译,会呈现不同的动作,动作取决于你制作的混合空间。


动画蓝图理解!

红色组件是实时更新的,激活c++写的函数,实时返回角色速度和腾空状态。

 实时返回横向移动速度(MovementSpeed)和是否下落

void UNewAnimInstance::UpdateAniminationProperties()
{
	if (!Pawn)
	{
		Pawn = TryGetPawnOwner();//获取到角色
	}
	if (Pawn) {
		FVector Speed = Pawn->GetVelocity();
		FVector xyspeed = FVector(Speed.X, Speed.Y,0);
		MovementSpeed = xyspeed.Size();

		IsJumping = Pawn->GetMovementComponent()->IsFalling();//#include "GameFramework/PawnMovementComponent.h"
	}
}

 移动速度决定输出动画

处理移动速度信息-输出


 

混合空间2d

  状态机 

换成2d的混合空间

 

起跳

1.腾空动作

 

 

2.落地动作

 3.回到原来的姿势

落地动作播放剩余时间<0.68,即播放了0.32。播放了0.32后,执行下一个动作。

 


 

 替换掉角色的动画蓝图

系统自带  _C 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/185396.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FreeRTOS中的信号量实验

信号量是操作系统中重要的一部分&#xff0c;信号量一般用来进行资源管理和任务同 步&#xff0c;FreeRTOS 中信号量又分为二值信号量、计数型信号量、互斥信号量和递归 互斥信号量。不同的信号量其应用场景不同&#xff0c;但有些应用场景是可以互换着使用。 本章要实现的功能…

【数据结构从0到1之树的初识】

目录 1.树的表达方式 1.1 树的定义 1.2树的相关概念 1.3树的存储结构 1.3.1 双亲表示法 1.3.2 孩子表示法 1.3.3 孩子兄弟表示法 1.4树在实际中的应用 后记&#xff1a; &#x1f57a;作者&#xff1a; 迷茫的启明星 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点…

Lua 迭代器

Lua 迭代器 参考文章&#xff1a; 菜鸟教程。 https://cloud.tencent.com/developer/article/2203215 迭代器&#xff08;iterator&#xff09;是一种对象&#xff0c;它能够用来遍历标准模板库容器中的部分或全部元素&#xff0c;每个迭代器对象代表容器中的确定的地址。 在 L…

23种设计模式之七种结构型模式

23种设计模式之七种结构型模式1. 设计模式概述1.1 什么是设计模式1.2 设计模式的好处2. 设计原则分类3. 详解3.1 单一职责原则3.2 开闭原则3.3 里氏代换原则3.4 依赖倒转原则3.5 接口隔离原则3.6 合成复用原则3.7 迪米特法则4. Awakening1. 设计模式概述 我们的软件开发技术也包…

[Python从零到壹] 番外篇之可视化利用D3库实现CSDN博客每日统计效果(类似github)

欢迎大家来到“Python从零到壹”&#xff0c;在这里我将分享约200篇Python系列文章&#xff0c;带大家一起去学习和玩耍&#xff0c;看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解&#xff0c;真心想把自己近十年的编程经验分享给大家&#xff0c;希望…

关于对公司做项目的一些想法

项目管理法则里面最重要的是如下的三角形&#xff1a;基于一定的范围、合理的时间和足够的成本下实现项目完成&#xff0c;并保证质量。项目中最重要的是质量&#xff0c;质量不行就意味着项目失败&#xff0c;请参考大跃进时期的大炼钢铁&#xff08;多快好省大炼钢&#xff0…

是什么影响了 MySQL 索引 B + 树的高度?

提到 MySQL&#xff0c;想必大多后端同学都不会陌生&#xff0c;提到 B 树&#xff0c;想必还是有很大部分都知道 InnoDB 引擎的索引实现&#xff0c;利用了 B 树的数据结构。 那 InnoDB 的一棵 B 树可以存放多少行数据&#xff1f;它又有多高呢&#xff1f; 到底是哪些因…

WebRTC → 信令服务器

相关简介 信令&#xff1a;驱动系统运转。控制各个模块的前后调用关系;业务不同&#xff0c;逻辑不同&#xff0c;信令也会千差万别 要实现一对一通信&#xff0c;驱动系统的核心就是信令。信令控制着系统各个模块之间的前后调用关系&#xff0c;比如当收到用户成功加入房间后…

3D模型在线查看利器【多种格式】

BimAnt 3DViewer网站可以 打开多种 3D 文件格式并在你的浏览器中可视化展示3D模型&#xff0c;支持 obj、3ds、stl、ply、gltf、glb、off、 3dm、fbx 等等。 1、支持的3D模型格式 BimAnt 3DViewer网站支持多种文件格式的导入和导出。 如果文件格式有文本和二进制版本&#x…

Minecraft 1.19.2 Fabric模组开发 09.Mixin

我们今天用mixin在1.19.2 fabric中实现一个望远镜 1.由于fabric已经自动配置好了mixin&#xff0c;所以我们无需配置mixin&#xff0c;先在ItemInit中新建一个我们的望远镜物品&#xff1a; ItemInit.java public static final Item BIRDWATCHER registerItem("birdwat…

Smart-doc的脚本生成在线文档(精简官方文档描述)

Smart-doc优点&#xff1a; 无侵入的接口文档、在线文档生成器。三种生成文档方式。对于程序代码开发中只需要加注释&#xff08;符合一定的语法&#xff0c;五分钟可掌握&#xff09;就能生成在线文档。可以支持c、java、php、node等等常见的主流语言。 如何使用&#xff1a; …

47.Isaac教程--ORB

ORB ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 文章目录ORBGem 提供的类型关键点描述符如何使用 Gem&#xff08;界面&#xff09;构建包Isaac Codelets示例应用程序主机设备嵌入式 Jetson 设备这个 gem 提供了一个特征检测器和描述符提取器…

2011年专业408算法题

文章目录0 结果1 题目2 思路2.1 思路1&#xff08;暴力解&#xff1a;排序&#xff09;2.2 思路2&#xff08;较优解&#xff1a;归并合并数组&#xff09;2.3 思路3&#xff08;较优解&#xff1a;数组指针后移&#xff09;2.4 思路4&#xff08;最优解&#xff1a;两个数组的…

webpack是如何进行依赖图谱收集的?

我自己学习webpack已有很长时间了&#xff0c;但是经常会遇到这样的问题: 可以熟练配置webpack的一些常用配置&#xff0c;但是对一些不常见的api或者概念总是云里雾里。因此&#xff0c;对着网上资料手写了一个简易版的webpack&#xff0c;现在对其中的依赖图谱收集部分进行梳…

Numpy(7)—字节交换、NumPy 副本和视图、深浅拷贝、矩阵库、NumPy 线性代数、NumPy IO(读写)、NumPy Matplotlib

1.字节交换 import numpy as npA np.array([1, 256, 8755], dtypenp.int16) print(A) print(list(map(hex, A))) print(A.byteswap(inplaceTrue)) print(list(map(hex, A)))2.NumPy 副本和视图 副本是一个数据的完整的拷贝&#xff0c;如果我们对副本进行修改&#xff0c;它不…

【MyBatis 持久层框架】Mapper代理开发详细解读

文章目录1. 前言2. Mapper 代理开发3. 过程剖析4. 总结1. 前言 前面在 MyBatis 快速入门篇中&#xff0c;我们使用了 MyBatis 原生的开发方式操作数据库&#xff0c;解决了 JDBC 操作数据库时的硬编码和操作繁琐的问题。实际上&#xff0c;在 Java 项目中&#xff0c;我们更常…

python3——函数

目录 一、函数定义 二、函数调用 1.打印Hello World 2.判断最大值 3.计算矩形面积 4.help说明文档 三、参数传递 (一)位置参数 (二)关键字参数 (三)默认参数(缺省参数) (四)可变参数(收集参数) 1.位置可变参数(接收所有的位置参数&#xff0c;返回一个元组) 2.关键…

高通开发系列 - MSM8909 lk aboot阶段点灯操作

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 第一种LK提供的接口实现第二种直接操作寄存器这篇文章之前请参考下:高通开发系列 - MSM8909指示灯操作 在LK中点灯有两种方式,一种…

JAVA-定位排查bug

在开发过程中难免会遇到bug&#xff0c;理解bug的含义&#xff0c;定位bug的位置&#xff0c;对于解决bug至关重要&#xff01;掌握高效的排错技巧&#xff0c;对于程序员来说必不可少。 目录 一、错误异常的分类 二、常见报错信息及原因&#xff08;持续更新中&#xff09;…

域内权限维持:AdminSDHolder

01、简介 AdminSDHolder是一个特殊的AD容器&#xff0c;通常作为某些特权组成员的对象的安全模板。Active Directory将采用AdminSDHolder对象的ACL并定期将其应用于所有受保护的AD账户和组&#xff0c;以防止意外和无意的修改并确保对这些对象的访问是安全的。如果攻击者能完全…