• 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);
    
    • 1
    • 2

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

    UINTERFACE(MinimalAPI, BlueprintType)
    class UCombatInterface : public UInterface
    {...
    
    • 1
    • 2
    • 3

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

  • 相关阅读:
    Linux 下的 OOM Killer理解Out of memory: Kill process
    c++学生管理系统
    【六袆 - MySQL】SQL优化;Explain SQL执行计划分析;
    centos8.2配置静态ip
    springboot使用redis实现消息队列功能,redis使用list和stream实现消息队列功能,redis实现消息队列的风险点分析
    第22节-PhotoShop基础课程-模糊工具
    docker保存镜像、打包tar、加载tar镜像
    VulnHub DC-6
    NVIDIA Jetson Nano 2GB 官方系列文章汇总
    C++DAY42
  • 原文地址:https://blog.csdn.net/qq_30100043/article/details/138041230