Follower SkeletalMesh组件不会创建物理碰撞体

我们现在项目内的角色是由多个部位的SkeletalMesh组合而成的,为了支持换装。所以他们都SetLeaderPose,跟着Main SkeletalMesh动画走。但是现在我们发现这些子部位的SkeletalMeshComponent不会创建物理碰撞体,因为ShouldCreatePhysicsState返回false。并且,好像这些Mesh因为不跑动画,所以即便我override ShouldCreatePhysicsState强制创建碰撞体,这些碰撞体的位置也不会正确更新。因为我们不想让MainMesh创建所有部位的碰撞体,因为一个部位的各种可能Mesh的碰撞体是不一样的,所以我该如何为不同子部位创建物理碰撞体?制作拼装角色的正确方法是什么,SetLeaderPose的官方用途是什么?

bool USkeletalMeshComponent::ShouldCreatePhysicsState() const
{
    bool bShouldCreatePhysicsState = Super::ShouldCreatePhysicsState();
    bShouldCreatePhysicsState &= (LeaderPoseComponent.IsValid() == false);
    
    return bShouldCreatePhysicsState;
}

<br/>

[Attachment Removed]

您好,

引擎提供的拼装角色方案主要有三种:

  1. SetLeaderPoseComponent 只更新leader component的动画, 子部件中的物理碰撞体无法由主骨骼动画更新, 所以不支持创建PhysicsState;
  2. Cope Pose from Mesh 在动画蓝图中把主骨骼的pose拷贝过来, 支持各部件独立的动画和物理更新, 但相对而言开销高一些;
  3. 运行时合并Skeletal Mesh, 需要开启Skeletal Merging插件, 运行时将各个部件组装成一个skeletal component, 也会合并物理碰撞, 合并时刻的开销高, 但动画和物理的更新开销都比第二种低很多.

三种方式的使用在这个文档里有比较详细的介绍, 你的需求应该可以用cope pose或合并skeletal mesh做到.

[Attachment Removed]

感谢,原来官方文档已经介绍了,以后还是要先找找官方文档。

[Attachment Removed]