当前位置:   article > 正文

【UE5】【蓝图】使用MoveComponentTo移动Character_ue5 charactermovementcomponent

ue5 charactermovementcomponent

最近在研究优化一个功能, 将人物actor从当前坐标移动到固定的坐标点, 由于有大量的相同actor, 想尽量减少消耗. 在网上找到了MoveComponentTo这个函数, 但是发现它只能移动场景组件,一度陷入搁置. 经过了九九八十一难, 终于弄明白如何使用了, 不一定是正道,但是能用,嘿嘿.

创建Character

创建一个Character, Mesh和动画蓝图随便弄一弄就行,我用的是UE新手教学的小白人, 重要的是Character自带的角色移动组件(CharacterMovementComponent).
Character

创建控制蓝图

MoveComponentTo必须要移动子Actor, 因此我们需要一个控制这些子Actor的父Actor蓝图. 一般来说,遇到这种需求看这个文章的,应该本身都有个父蓝图了吧XD!创建子Actor
这里我写的是每3秒创建一个人物,并把它移动到随机位置. 这一步的重点是要使用"添加子Actor组件"节点,然后"设置子Actor类"! 妄想直接创建出类型是我们之前创建的Character的子Actor是不可行的, 卡了好久…

移动到随机位置

移动到随机位置事件
这里的RandomXY和计算相对位置都是比较简单的、方便测试的函数, 下面我会放出截图. 这一步最重要的是要把获取之前传入的子Actor组件中的子Actor, 然后才能转换成我们自己的Charactor(C_Person),如果直接传入子Actor组件会报错,类型转换会一直失败!

最后的旋转并移动就是本篇核心了! 不知道是不是已经想骂我废话多了, 但是曾经的我就经常卡在教程里非重点的内容不得要领, 所以我自己写教程要每个部分都尽量详细, 哈哈.

介绍一下旋转并移动的几个输入参数:
Child Actor: 就是上一步添加的子Actor组件
Rotation: 从当前位置到目标位置的旋转向量
Target Relative Location: 目标坐标的相对位置向量

RandomXY

RandomXY
一个简单的随机浮点数函数.

计算相对位置

计算相对位置
由于MoveComponentTo使用的是相对位置, 我们需要单独计算一下放进去, 不知道有没有更方便的UE自带函数, 不过这个计算自己写起来也很方便.

Character蓝图中的移动逻辑(C_Person)

接下来需要在Character的蓝图界面添加移动事件
Character移动事件
这里已经获取了所有所需的函数, 直接调用就可以了, Ease Out和Ease In代表在结束/开始时是否逐渐减速/加速. Over Time就是整个移动过程需要的时间.

#总结
其实使用这个函数还有一个原因是想控制在3秒内移动, 因为人物位置的数据接口刷新频率是3秒一次, 这种移动方式可以无论距离多远都在3秒内大概走完, 方便控制时间. 本身MoveComponentTo的使用是很简单的, 麻烦的是寻找合适的添加子Actor方法和转换子Actor组件类型的方法. 研究明白了感觉很简单, 但是没路的时候很难猜出, 只能在所有的可能节点里依次寻找, 网上也搜不到类似的用法, 不知道有没有更好的解决方法, 欢迎大家指点.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/760912
推荐阅读
相关标签
  

闽ICP备14008679号