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

87 篇文章 12 订阅

在上一篇,我们实现了火球术可以向目标方向发射,并且还可以按住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去调用
在这里插入图片描述
接着,修改技能里的转换接口,转换成战斗接口,调用函数
在这里插入图片描述
这样,只要继承了战斗接口,不管是什么角色,都可以实现此接口的调用。

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值