项目中,有时会出现人物提着箱子、拎着包、握着枪等情况。
这时需要用到 attach to 函数(或者节点)。
蓝图中:
C++中:
AttachToComponent(ArmMesh, FAttachmentTransformRules::SnapToTargetIncludingScale, MeshSocketName);
这里都是使用AttachToComponent函数,因为以上提到的几种应用场景都是将物体attach到人物角色上,那即是将actor附着到人物蓝图的SkeletalMesh中的Socket上(借助Socket我们还可以设置物体附上之后的transform,通过添加预览物可以看到attach的效果)。
这里要注意Loaction Rule有三种:Keep Relative , Keep World,Snap to Target。
Keep Relative:
将actor在当前场景中的transform移到parent(Socket)中。(当actor在world中处于原始transform时,它最终效果就是在Socket的预览中的效果。
Keep World:
保持actor在当前场景中的transform,对socket设置transform没有意义。但如果socket移动旋转缩放,会跟随相应移动旋转缩放。
Snap to Target:(最常使用)
使用Socket设置的transform,最终效果与actor在当前场景中的transform无关,最终效果等于socket中预览看到的效果。
DetachFromActor要注意,只有Keep Relative和Keep World选项。
如果使用 Snap to Target 进行attach,那么Keep World让Detach之后对保持之前在Socket调整后的最终尺寸到新的场景中(建议使用该方法);如果使用Keep Relative,则会让尺寸使用物体原始尺寸。

