【问题标题】:USphereComponent and Overlap EventsUSphereComponent 和重叠事件
【发布时间】:2017-01-22 23:50:35
【问题描述】:

我似乎误解了如何在我的组件上实现重叠事件。我创建了一个 USphereComponent 来跟随我的角色。它的设计目的是在玩家触及范围内的其他附近 Actor 上触发重叠事件:

AScrollsCharacter::AScrollsCharacter()
{
    ...Redacted irellevant code...

    //Create activate trigger radius
    USphereComponent* activateRadius = CreateDefaultSubobject<USphereComponent>(TEXT("Activate Radius"));
    activateRadius->InitSphereRadius(ACTIVATE_RADIUS);
    activateRadius->bGenerateOverlapEvents = true;
    activateRadius->SetupAttachment(RootComponent);
    activateRadius->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Overlap);
    activateRadius->OnComponentBeginOverlap.AddDynamic(this, &AScrollsCharacter::OnOverlapActivateSphere);
    activateRadius->bHiddenInGame = false;
}

void AScrollsCharacter::OnOverlapActivateSphere(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
    GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, TEXT("We got a collision."));
}

球体组件没有错误地附加,并且半径以正确的大小在屏幕上绘制。但是,当我将半径带向游戏中的其他演员并导致它们重叠时,事件似乎没有触发。

所有涉及的参与者都将“生成重叠事件”标志设置为 true。

有人可以帮助我了解我在此设置中缺少什么吗?

编辑:球体组件的调试边界在编辑器中显示为橙色,但在游戏运行时变为红色。这种颜色变化有意义吗?

【问题讨论】:

    标签: c++ collision-detection unreal-engine4


    【解决方案1】:

    确保所涉及的其他参与者也启用了碰撞,并确保它们实际上具有碰撞组件。例如,如果其他演员有骨架网格组件,则该网格需要具有物理资产,否则它不会有任何碰撞! 您还可以将碰撞球体/盒子/胶囊添加到您的其他演员,并确保在其上启用碰撞!

    【讨论】:

    • 他们是,他们确实如此。我在帖子中声明,所有参与者都将 Generate Overlap Events 标志设置为 true,这意味着它们都有碰撞组件。
    【解决方案2】:

    如果您仍在尝试解决此问题,请尝试使用

    activateRadius->SetSphereRadius(ACTIVATE_RADIUS);
    

    而不是

    activateRadius->InitSphereRadius(ACTIVATE_RADIUS);
    

    根据文档,您正在使用的功能,InitSphereRadius

    在不触发渲染或物理更新的情况下设置球体半径。

    我很确定你想要那个物理更新。

    【讨论】:

    • 感谢您的回复!不幸的是,这似乎并没有改变任何东西。我认为 SetSphereRadius 会触发强制渲染更新,但如果没有强制更新,无论如何都会在每个滴答声中正常发生。
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    相关资源
    最近更新 更多