39. UE5 RPG角色释放技能时转向目标方向

在上一篇,我们实现了火球术可以向目标方向发射,并且还可以按住Shift选择方向进行攻击。技能的问题解决,现在人物释放技能时,无法朝向目标方向,接下来我们解决人物的问题。

实现思路:
我们将使用一个官方的新插件叫Motion Warping来实现它,然后在蒙太奇中设置它的旋转即可。

添加Motion Warping

这个插件默认是不会开启的,需要我们单独去开起,打开插件,搜索Motion Warping
在这里插入图片描述
开启并重启,因为它是测试插件,会提示你
在这里插入图片描述
打开角色的蓝图,添加插件
在这里插入图片描述

修改蒙太奇

插件添加了,使用它需要我们修改蒙太奇,在蒙太奇中确定在什么时候要朝向目标,当角色播放动画时,也会进行对应的旋转操作。
我们先在蒙太奇添加一行通知,和事件的分开,方便查看
在这里插入图片描述
在这一行中,添加通知状态中选择Motion Warping
在这里插入图片描述
它有一个开始和结束,方便我们设置移动的时间范围
在这里插入图片描述
选中通知,在细节那里修改它的名称,我们需要一个名称
在这里插入图片描述
我们只需要修改角色旋转,不需要修改移动,所以将移动关闭,并且将旋转类型修改为朝向目标点
在这里插入图片描述

这里记得打开动画文件(蒙太奇的源动画),设置开启根运动,开启这一项以后,动作中的修改角色旋转移动的值会应用到角色身上
在这里插入图片描述
在动画中设置完成了,只是实现了逻辑,比如角色需要朝向那里我们还没有设置,接下来我们将实现角色朝向的目标的设置。

设置角色应该朝向的目标位置

打开角色蓝图,我们需要添加一个自定义事件来实现对目标位置的添加。
然后通过自定义事件调用Motion Warping组件的上的函数节点来实现,
它需要两个值,一个值是名称,就是我们前面设置蒙太奇动画里面添加的通知的名称,这个名称最好cv,避免出错。
另一个值就是需要设置的朝向位置,这个我们在技能中调用设置,所以作为参数传入设置。
在这里插入图片描述
接着打开技能,在技能蓝图类里面,获取到目标位置后,将Avatar转换为角色类,接着再调用事件,实现对目标位置设置
在这里插入图片描述
接着就可以运行测试了。
虽然这样实现了功能,但是获取角色时需要转换的耦合度太高,如果切换了使用的角色,我们是不是每次都要修改,肯定不是我们想要的方式,我们没必要将其必须转换为对应的,我们可以将其转换为对应的接口就行,接口就是为这种情况而生的。
接下来,我们将实现通过接口设置Motion Warping的函数。
打开代码,找到我们之前创建的战斗接口,和战斗有关的角色类都会继承此接口,它不但会实现通用,而且还能节省转换性能消耗。
在战斗接口内增加一个需要蓝图可以覆盖的函数(BlueprintImplementableEvent),并且在蓝图中也可以去调用(BlueprintCallable)。

	UFUNCTION(BlueprintImplementableEvent, BlueprintCallable)
	void UpdateFacingTarget(const FVector& Target);

我们还需要将战斗接口设置为蓝图类型,这样在蓝图中可以将其转换为对应的接口

UINTERFACE(MinimalAPI, BlueprintType)
class UCombatInterface : public UInterface
{...

编译打开蓝图,将我们实现的角色内的自定义事件,修改为通过UpdateFacingTarget去调用
在这里插入图片描述
接着,修改技能里的转换接口,转换成战斗接口,调用函数
在这里插入图片描述
这样,只要继承了战斗接口,不管是什么角色,都可以实现此接口的调用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(CVPR,2023)SAN:用于开放词汇语义分割的边缘适配网络

文章目录 相关论文相关资料摘要引言方法对视觉 token 的特征融合使用注意力偏差进行掩码识别分割图像生成 实验 相关论文 (CVPR,2024)SED:一个用于开放词汇语义分割的简单编解码器 (CVPR,2024)…

python int占几个字节

《深入理解计算机系统》这本书上面提到了在32位机器和64机器中int类型都占用4个字节。《The C Programming language》这本书,里面有一句话是这样的:Each compiler is free to choose appropriate sizes for its own hardware, subject only to the rest…

https协议的加密方式详解

各位大佬能多多点赞关注评论收藏,球球各位大佬们了!! ! 目录 1.为什么要加密? 2.如何加密 1.密钥(yue,第四声) 2.对称加密 3.非对称加密 4.公证机构 3.总结 1.为什么要加密?…

systemverilog中位的选择

常用的变量类型就是 reg 和 wire ,这两种类型可以定义 一位的变量,也可以定义多位,其中 1 bit 的变量称为 标量(scalar),多 bit 的变量称为 向量(vector),如下所示: wire o_nor; // singl…

【树莓派】如何刷个系统给树莓派4B,如何ssh登陆到树莓派

文章目录 下载树莓派镜像下载烧写软件烧写编辑设置连接树莓派4B重启ssh查看树莓派IPssh远程连接问询、帮助 下载树莓派镜像 https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit 下载烧写软件 https://www.raspberrypi.com/software/ 烧写 编辑…

7. Spring Boot 创建与使用

经过前面的六篇文章,Spring Framework的知识终于大致讲完了,但是Spring AOP还没提到,个人认为Spring AOP更适合放在Spring MVC之后再讲解,而讲解Spring MVC前先学习Spring Boot的目的也是为了在学习Spring MVC的时候直接使用Sprin…

EelasticSearch使用

1. Easy-ES介绍 Easy-Es 2. 导入依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions>//排除框架中原有的依赖包<exclusion><groupId>org.elast…

Vue3 + Js + Element-Plus + VueX后台管理系统通用解决方案

前言 本文是作为学习总结而写的一篇文章&#xff0c;也是方便以后有相关需求&#xff0c;可以直接拿来用&#xff0c;也算是记录吧&#xff0c;文中有一些文件的引入&#xff0c;没给出来&#xff0c;完整项目地址&#xff08;后续代码仓库放这里&#xff09; 1、layout解决方…

kaggle 纽约预测出租车价格 得分 5.34072

流程 导入所要使用的包引入kaggle的数据集csv文件查看数据集有无空值填充这些空值提取特征分离训练集和测试集调用模型 数据资源获取 数据资源获取 导入需要的包 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns引入kaggl…

基于CH32V103的多功能推杆设计

一、项目简介 “创意源于生活&#xff0c;工具始于懒惰。” 整体造型外观参考了最近比较火的夫妻游戏《双人成行》第一关里面那个吸尘器的推杆开关&#xff0c;结构中采用阻尼器/滚珠轴承等器件&#xff0c;使其非常具有质感和手感。功能上我构思不能只有电脑开关这么简单地一…

高架学习笔记之软件架构风格

目录 零、什么是软件架构风格 一、常见的软件架构风格 二、数据流风格 2.1. 批处理风格 2.2. 管道-过滤器风格 三、调用/返回风格 3.1. 主/子程序风格 3.2. 面向对象风格 3.3. 层次型风格 3.4. 客户端/服务器风格 3.4.1. 两层C/S体系结构 3.4.2. 三层C/S体系结构 …

Redis报错:CROSSSLOT Keys in request don‘t hash to the same slot的解决方案

最近&#xff0c;项目上线的时候&#xff0c;出现了一个Redis的报错&#xff1a;CROSSSLOT Keys in request dont hash to the same slot&#xff0c;这个在内网环境下无法复现&#xff0c;因为正式环境的Redis是cluster集群模式&#xff0c;而我们内网环境是单机模式。(后面我…

k8s安装,linux-ubuntu上面kubernetes详细安装过程

官方文档&#xff1a;https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/ 环境配置 该部分每个主机都要执行 如果你确定不需要某个特定设置&#xff0c;则可以跳过它。 设置root登录 sudo passwd root sudo vim /etc/ssh/sshd_config Perm…

深入OceanBase内部机制:资源隔离实现的方式总结

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 目录 1. 为何HTAP需要资源隔离2. OceanBase的资源隔离机制概述租户间资源隔离租户内资源隔离物理资源隔离大查询请求的隔离优先级…

排序 “贰” 之选择排序

目录 ​编辑 1. 选择排序基本思想 2. 直接选择排序 2.1 实现步骤 2.2 代码示例 2.3 直接选择排序的特性总结 3. 堆排序 3.1 实现步骤 3.2 代码示例 3.3 堆排序的特性总结 1. 选择排序基本思想 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个…

【剪映专业版】13快速为视频配好音:清晰、无噪声、对齐

视频课程&#xff1a;B站有知公开课【剪映电脑版教程】 使用场景&#xff1a;视频无声音或者视频有声音但是需要更改声音 时间指示器在哪里&#xff0c;就从哪里开始 红色按钮&#xff1a;开始录音 声音波纹&#xff1a;蓝色最佳&#xff0c;黄色或红色声音太大&#xff0c;…

网络原理-UDP和TCP

在传输层中有两个非常重要的协议&#xff0c;UDP和TCP&#xff0c;现在就来研究一下这两个协议。 UDP 报文格式 我们观察可以发现&#xff0c;里面UDP报文长度为2个字节&#xff0c;那么是多少呢&#xff1f;我们需要快速反应如下固定字节数据类型的取值范围&#xff1a; 字…

open Gauss 数据库-06 openGauss数据库安全指导手册5.0.0

发文章是为了证明自己真的掌握了一个知识&#xff0c;同时给他人带来帮助&#xff0c;如有问题&#xff0c;欢迎指正&#xff0c;祝大家万事胜意&#xff01; 目录 前言 openGauss数据库安全指导 1 用户权限控制 1.1 实验介绍 1.1.1 关于本实验 1.1.2 实验目的 1.2 用户…

ACE框架学习2

目录 ACE Service Configurator框架 ACE_Server_Object类 ACE_Server_Repository类 ACE_Server_Config类 ACE Task框架 ACE_Message_Queue类 ACE_TASK类 在开始之前&#xff0c;首先介绍一下模板类的实例化和使用。给出以下代码 //ACCEPTOR代表模板的方法 template <…

CAS Client使用以及执行原理

CAS Client使用以及执行原理 流程介绍 CAS Client是利用Java Web中的Filter进行实现认证功能&#xff0c;客户端对CAS Server的认证流程分为以下步骤&#xff1a; 访问CAS Client服务 由于当前session中未检测到认证信息&#xff0c;会重定向到CAS Server地址进行认证 在CA…