【发布时间】: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