0

我有这个第三人称角色蓝图,如果 CameraVisibilitySphere 组件与角色重叠,我试图在其中隐藏角色网格。它确实有效,但前提是角色移动。

如果只是简单地将角色移动到靠近物体的位置,旋转相机使其与物体碰撞并靠近角色,网格就不会消失。但是,如果我只是稍微移动角色,无论向哪个方向,球体仍然与角色重叠,Is Overlapping Component 将返回 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);

顺便说一句,角色的胶囊被设置为生成重叠事件并与相机重叠。

我应该怎么做才能完成这项工作?而且,最重要的是,重叠事件是否会在同一参与者的子组件上被调用?

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

4

1 回答 1

0

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

于 2017-11-29T19:52:31.573 回答