网站主机要怎么做,吉林住房和城乡建设部网站,金阳龙泉苑网站建设,做电影网站 资源怎么存放文章目录 一、引入感知组件并绑定委托二、优化角色旋转 一、引入感知组件并绑定委托
PawnSensingComponent是UE中用于感知其他 Pawn#xff08;或 Actor#xff09;存在的一个组件#xff0c;常用于 AI 角色的视觉、听觉等感知功能。它为 AI 提供了基础的感知能力#xff… 文章目录 一、引入感知组件并绑定委托二、优化角色旋转 一、引入感知组件并绑定委托
PawnSensingComponent是UE中用于感知其他 Pawn或 Actor存在的一个组件常用于 AI 角色的视觉、听觉等感知功能。它为 AI 提供了基础的感知能力允许它们在游戏中做出智能反应如检测玩家位置、追踪目标等。
功能视觉感知、听觉感知、视锥角度主要属性 ① SightRadius视觉半径控制 Pawn 能看到的最大距离。 ② SensingInterval感知间隔设置每次感知的时间间隔减少感知的频率来优化性能。 ③ HearingThreshold听觉阈值AI 需要检测的最低噪音水平。 ④ PeripheralVisionAngle定义视觉的视野角度。
//SAICharacter.h
void SetTargetActor(AActor* NewTarget);
UPROPERTY(VisibleAnywhere, Category Components)
UPawnSensingComponent* PawnSensingComp;UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category Components)
USAttributeComponent* AttributeComp;UFUNCTION()
void OnPawnSeen(APawn* Pawn);//SAICharacter.cpp
PawnSensingComp CreateDefaultSubobjectUPawnSensingComponent(PawnSensingComp);void ASAICharacter::OnPawnSeen(APawn* Pawn)
{SetTargetActor(Pawn);//DrawDebugString(GetWorld(), GetActorLocation(), PLAYER SPOTTED, nullptr, FColor::White, 4.0f, true);}
void ASAICharacter::SetTargetActor(AActor* NewTarget)
{AAIController* AIC CastAAIController(GetController());if (AIC){AIC-GetBlackboardComponent()-SetValueAsObject(TargetActor, NewTarget);}
}委托绑定初始化
void ASAICharacter::PostInitializeComponents()
{Super::PostInitializeComponents();PawnSensingComp-OnSeePawn.AddDynamic(this, ASAICharacter::OnPawnSeen);AttributeComp-OnHealthChanged.AddDynamic(this, ASAICharacter::OnHealthChanged);
}二、优化角色旋转
在观察AI角色移动时我们注意到AI角色在转向时是一下就转到就看到的角色方向非常突兀。为了优化可以在MovementComponent组件里勾选使用控制器所需的旋转。该选项将使角色按照旋转速率平滑地旋转到目标角度。
想使上述选项生效还需取消勾选自身细节面板里的使用控制器旋转Yaw这样AI控制器不再强制设置角色当前的Yaw实现Movement组件完全控制角色的旋转。*