Nat*_*les 5 c++ collision-detection unreal-engine4
我似乎误解了如何在我的组件上实现重叠事件.我创建了一个USphereComponent来跟随我的角色.它旨在解决玩家触及范围内其他附近演员的重叠事件:
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."));
}
Run Code Online (Sandbox Code Playgroud)
球体组件无错误地附着,并且在屏幕上以正确的大小绘制半径.但是,当我将半径移向游戏中的其他角色并导致它们重叠时,该事件似乎不会被触发.
所有涉及的参与者都将Generate Overlap Events标志设置为true.
有人可以帮我理解我在这个设置中缺少的东西吗?
编辑:球体组件的调试范围在编辑器中显示为橙色,但在游戏运行时变为红色.这种颜色变化有意义吗?
确保涉及的其他参与者也启用了碰撞,并确保它们实际上具有碰撞组件。例如,如果其他演员具有骨架网格物体组件,则该网格物体需要具有物理资源,否则它将不会发生任何碰撞!您还可以向其他演员添加碰撞球/盒子/胶囊,并确保启用碰撞!
| 归档时间: |
|
| 查看次数: |
2911 次 |
| 最近记录: |