UE4:如何将角色A的外表拷贝到另一个蓝图生成的对象中

在游戏开发中,有时我们需要根据A对象生成一个新的B对象,两者的逻辑不一样因此用的是不同蓝图,但我们希望B能完全复制A的外观。这时我们要做的工作就是把A的mesh组件(character对象必有)复制到B中

一、创建并拷贝旧mesh

首先将A对象的mesh通过下面的方法拷贝到B的mesh中。第一步是指定需要拷贝的mesh,第二步是设置mesh相对于挂接的父项的偏移量,第三步是由于每个mesh可能会有多个material成员,因此需要把这些成员逐个拷贝过去

在这里插入图片描述

二、拷贝挂在mesh下面的子mesh

有时候,对象A的mesh可能不只有mesh本身,还会有多个子mesh。如下图,同时有身体、头发、脸部三个子mesh

这时候,除了拷贝mesh本身,还需要将子类的mesh逐个拷贝过去。方法是:

1、用GetChildrenComponents获取Mesh的所有子组件,然后逐个尝试cast成SkeletalMesh

在这里插入图片描述

2、对于每个子组件,先用Add Skeletal Mesh Component创建一个新组件,然后用上述的方法把A对应子组件的信息拷贝到这个新组件中。由于是子组件,因此在拷贝完信息之后,还需要将子组件绑定到B对象的mesh组件上,如下图

在这里插入图片描述

第一步是AttachToComponent,将子组件绑定到mesh组件对应的挂接点上,其中挂接点的名字从A的子组件中获取。

第二步则是调用SetMasterPoseComponent方法,如果没调用此方法,就会发现虽然B对象已经有了对应的子组件,但这些组件都是静止的,比如头发完全静止,没有原来A对象中随风摆动的效果。

三、拷贝动画信息

在将子mesh拷贝完之后,最后一步则是将mesh的动画蓝图的配置拷贝过来,如下图,使角色B可以正常播放动画。

[外链图片转存失败(img-XNjxnIr9-1567511130238)(https://raw.githubusercontent.com/Kevin--Wu/Public_Photo_Bed/master/201909/201993193738.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值