UE5(基础移动)如何制作人物移动

news/2024/11/30 18:51:21/

一.本篇会讲述通过虚幻资产导入开始,制作人物的输入、生成角色、移动、IK动画、动画混合功能。

1.首先第一步我们需要获取资产,在EPIC虚幻商城中的浏览处选择角色选择免费找到

添加人物到你的项目中

现在把动画文件迁移到我们的主项目中(私信并说明来意免费发动画给你)

2.打开我们的动画资产,找到动画然后右键选择迁移

点击迁移后找到项目文件中的 Content 但是不要选择 Content 中的文件夹

成功将动画文件迁移到我们的项目

二.现在我们的目标是创建一个角色,并将他生成在地图中。

让我们创建一个玩家的蓝图角色,并取名为BP_PlayerBase。将BP_PlayerBase右键创建多个子类蓝图,这样做的优势是父类更改设置子类也会有相同的操作

打开我们的子类角色,点击网格体将骨骼网格体资产添加为我们之前导入的多个资产,将两个资产都添加进我们的角色中,现在角色会朝向错误的方向,并且脚底也没有贴地,这时我们应该通过父类BP_PlayerBase 来调整角色转向正确的方向并且通过左右透视来将角色的脚贴向网格体的底部

为了便于操作与观察我们为人物创建一个 SpringArm 然后在 SpringArm 上创建一个 Camera 这样通过 SpringArm 的值大小我们就可以观察到人物的动画状态了。

创建好我们想要生成的玩家以后,我们需要创建玩家控制器以及游戏模式基础来将我们的角色生成在地图中,

打开游戏模式基础 将类的基础设置的玩家控制器类改为我们创建的控制器模式,并且默认Pawn改为 之前我们创建的子类蓝图。

打开我们的项目设置,将默认游戏模式改为我们创建的游戏模式,确保选中的游戏模式是我们之前创建的部分,将默认地图也修改为我们的项目地图最佳。

修改完成后我们回到地图找到世界场景设置,将内部的游戏模式重载改为我们创建的游戏模式,

在地图中创建一个玩家出生点就会生成我们之前选择的那个pawn了

三.能够在地图上创建角色之后,我们来制作输入方式以及按钮,创建一个输入映射情景

创建两个输入操作分别是IA_Look,IA_Movement

对于Movement与Look来说他们只需要在Axis2D平面移动即可

回到 输入映射情景现在WASD都是向前移动,W我们不用调整,S添加否定修改,D添加到世界空间,A添加到世界空间与否定即可完成角色移动的输入映射。

在PlayerBase中创建Event BeginPlay ,通过获取控制器Cast to我们创建的控制器,再获取Enhanced 并且 通过Add Mapping Context 添加我们创建的输入映射情景。

因为我个人习惯的原因,这里简单讲解一下接口的用法。

对于接口来说会避免cast to 的强制引用,在每次游戏开始时每一个cast to 都会引用一次,而接口可以解决这个问题。

右键蓝图——蓝图接口,创建一个引用我们创建的控制器的接口,

点击右上角的函数,创建一个输出,类型改为我们之间创建的控制器

在接口中创建输出之后,我们回到我们创建的控制器中,点击类设置,在已实现的接口添加接口

在我的蓝图-接口中找到我们的接口函数

打开函数调用self即可,现在这个接口就是引用的我们创建的控制器。

创建好接口之后,将cast to切换即可

四.开始制作人物移动

获取event事件获取输出条件,这里只需要通过 Triggered(按下即触发)连接Add Movement Input 就可以添加移动输入,通过获取Get actor Forward Vector 来获取前后左右的向量,然后因为我们对IA_Movement的设置S控制的向量是与前进相反的所以只需要获取前进向量即可

左右的移动也一样,通过Add Movement Input 添加向右的向量,然后向左的向量相反即可。

制作鼠标输入,首先获取IA_Look,然后通过 Add Controller Yaw Input 获取上下看的输入,通过 Add Controller Pitch Input 获取左右的变量

五.IK重定向将动画IK到我们的人物上

http://t.csdnimg.cn/5kSd1

在这里补充如何将手指的动画也转移到我们的人物中

复制一份IK绑定,将人物切换为我们想要切换的角色

将链映射的源链与之对应即可获取动画

选中所有动画进行进行导出,如果不是所有动画都能够导出,那么我们应该去存放人物模型动画的位置查看人物模型使用的是否是一样的模型,每个动画使用的模型是不一样的,找到动画对应的模型选中即可看到其他的动画,创建一个文件夹将所有动画放入文件夹即可。

六.现在开始制作混合空间

在动画页面右键选择动画-混合空间-选择IK绑定动画的那个骨骼即可制作混合空间。

进入混合空间后将水平坐标改为运动方向,玩家可以360移动所以将轴值设置为360度,垂直坐标设置为运动速度,最小轴值设置为0,最大轴值设置为500注意这里的500是根据你的人物的最大速度的1/2决定,根据动画的数量来划分网格。

添加动画,首先动画idel状态将其放置运动速度为0的垂直轴0位置,随后设置在500的速度时切换动画为完整的前进动画,根据左右方向放置动画即可完成混合动画,我这里制作了行走、奔跑、蹲伏走三个动画混合空间。

七.使用动画蓝图、状态机、事件蓝图为人物添加动画

在对应的动画中右键-动画-选择动画蓝图,进入动画蓝图后会有AnimGraph动画蓝图,和事件蓝图两个部分,

创建一个状态机,打开状态机

打开状态后创建一个状态,在这个状态中选择混合空间即可将动画添加进人物动画中。

进入事件蓝图,这里主要为了判断玩家是否生成,如果玩家生成那么就将玩家保存到playpawn中。

将玩家生成信息保存为变量后,我们需要获取混合空间所需要的运动方向和运动速度

这里主要通过蓝图更新动画,确保我们的playerpawn是有效的,然后通过Get Velocity 将其返回值向量转换为浮点数,并保存在movement speed 中,通过get actor Rotation 和 get Velocity 一起获取 Calculate Direction 计算方向 ,并将其保存在Movement Direction。

在角色类中选择mash,将动画类选择为我们创建的动画类,人物就可以使用动画移动了。完成!


http://www.ppmy.cn/news/1425430.html

相关文章

股票战法课程之主力的痕迹

文章目录 1. 主力的操作痕迹2. 主力的建仓2.1 建仓的三种方式2.2 建仓的五个特点2.3 建仓的迹象2.4 建仓的成交量特征 1. 主力的操作痕迹 序号痕迹原因1不跟随大盘节奏筹码都在主力手中2突发利空消息,股价不跌反涨主力被套,不希望散户抛盘3很小的成交量…

RX.Net 第二章 hello Word

本章提供了一个简单而强大的例子,你可能在过去做过(或者将来可能会做),并以两种方式解决它:传统的事件风格和Rx风格的事件处理流。 net中编写事件驱动的应用程序非常直观,但在资源清理和代码可读性方面需要注意。 要使用Rx库,需要…

CERLAB无人机自主框架: 2-动态目标检测与跟踪

前言:更多更新文章详见我的个人博客主页【MGodmonkeyの世界】 描述:欢迎来到CERLAB无人机自主框架,这是一个用于自主无人飞行器 (UAV) 的多功能模块化框架。该框架包括不同的组件 (模拟器,感知,映射,规划和…

微服务使用SockJs+Stomp实现Websocket 前后端实例 | Vuex形式断开重连、跨域等等问题踩坑(一)

大家好,我是程序员大猩猩。 之前几篇文章,我们讲了Spring Cloud Gateway的轻量级实现,Nginx的配置概念与实现,如以下往期文章。 轻量级的Spring Cloud Gateway实践,实现api和websocket转发轻松实现Nginx的HTTP与WebS…

C#自定义窗体更换皮肤的方法:创建特殊窗体

目录 1.窗体更换皮肤 2.实例 (1)图片资源管理器Resources.Designer.cs设计 (2)Form1.Designer.cs设计 (3)Form1.cs设计 (4) 生成效果 (5)一个遗憾 1.窗…

多模态AnyGPT——整合图像、语音和文本多模态大规模语言模型算法原理与实践

概述 大规模语言模型在理解和生成人类语言方面具有非凡的能力,但迄今为止,它们的能力主要局限于文本处理。然而,现实世界是一个多模式的环境,信息通过视觉、听觉和触觉等多种感官进行交换。融入这种多样性是开发下一代系统的主要…

spring boot后端开发基础

spring boot后端开发基础 Spring Boot一、开发步骤二、Web分析三、跨域问题四、HTTP协议五、Web服务器六、响应前端请求七、springboot常用注解创建一个简单的RESTful API服务层和数据访问层配置类和Bean定义响应体和路径变量 Spring Boot 一、开发步骤 创建项目 添加依赖 项…

MySQL 按时间进行表分区

文章目录 创建按月份分区的表开启数据库事件临时配置(服务重启会失效)修改my.cnf文件(推荐) 定时事件自动建分区查询表分区信息 创建按月份分区的表 create table if not exists table_name (id bigint auto_increment …