头顶状态条的动态显示控制。状态条会根据与玩家角色的距离(默认300单位)进行自动隐藏,并通过定时器(默认0.2秒频率)持续检测距离变化。当角色由本地玩家控制时,状态条会自动隐藏。代码采用服务器-客户端初始化架构,并包含碰撞设置、组件创建等基础角色配置。
Source/Crunch/Public/Character/CCharacter.h:
变量:
//计时器频率
UPROPERTY(EditDefaultsOnly, Category="UI")
float CheakUpdateRate = 0.2f;
//状态条可见距离
UPROPERTY(EditDefaultsOnly, Category="UI")
float CheakUpdateDistance = 300.f;
// 距离检测计时器句柄
FTimerHandle VisibilityCheckTimerHandle;
函数:
//检测状态条可见性
void UpdateHeadGaugeVisibility();
Source/Crunch/Private/Character/CCharacter.cpp:
GetWorldTimerManager().ClearTimer(VisibilityCheckTimerHandle);
GetWorldTimerManager().SetTimer(VisibilityCheckTimerHandle, this, &ACCharacter::UpdateHeadGaugeVisibility, CheakUpdateRate, true);
void ACCharacter::UpdateHeadGaugeVisibility()
{
//测算距离
APawn* PlayerPawn = UGameplayStatics::GetPlayerPawn(GetWorld(), 0);
if (!PlayerPawn) return;
float Distance = FVector::DistSquared(GetActorLocation(), PlayerPawn->GetActorLocation());
//隐藏状态条
OverHeadWidgetComponent->SetHiddenInGame(Distance > CheakUpdateDistance*CheakUpdateDistance);

最低0.47元/天 解锁文章
4047

被折叠的 条评论
为什么被折叠?



