IsOverlappingComponent仅在角色移动时起作用?

时间:2017-10-09 23:19:51

标签: unreal-engine4 unreal-blueprint

我有this第三人称角色蓝图,如果CameraVisibilitySphere组件与角色重叠,我试图隐藏角色网格。它确实有效,但只有在角色移动时才会有效。

如果只是将角色移动到物体附近,旋转相机以使其与物体碰撞并靠近角色,则网格不会消失。但是,如果我只是移动角色,无论在什么方向,并且球体仍然与角色重叠,重叠组件将返回true,因为它应该并且网格消失了。

当网格不可见时,不移动角色,我旋转相机,使可见性球体不再重叠,没有任何反应。如果然后移动角色,网格会重新出现。

我尝试使用OnComponentBegin / EndOverlap并且我也编码了它,但没有任何变化,它显示了相同的行为。 我设置球体的代码是:

CameraVisibilitySphere = CreateDefaultSubobject<USphereComponent>(TEXT("CameraVisibilitySphere"));
CameraVisibilitySphere->SetupAttachment(FollowCamera);
CameraVisibilitySphere->SetSphereRadius(12.0f);
CameraVisibilitySphere->SetCollisionProfileName(TEXT("Actor"));
CameraVisibilitySphere->bGenerateOverlapEvents = true;
CameraVisibilitySphere->OnComponentBeginOverlap.AddDynamic(this, &ABatteryCollectorCharacter::OnCharacterBeginOverlap);
CameraVisibilitySphere->OnComponentEndOverlap.AddDynamic(this, &ABatteryCollectorCharacter::OnCharacterEndOverlap);

BTW将角色的胶囊设置为生成重叠事件并与相机重叠。

我该怎么做才能使这项工作成功?而且,最重要的是,是否会在同一个演员的子组件上调用重叠事件?

我是Unreal的新手,所以我仍然不太了解环境。

1 个答案:

答案 0 :(得分:0)

在父级中创建的重叠将在子级中继承。您可以尝试获取相机并执行MultiLineTraceByChannel,打破命中结果并将命中演员投射到角色,然后在角色中,触发代码以使用自定义事件隐藏角色。