ue4-选人工具

圆形Sphere形状选人,以当前某一Actor为中心,以半径为x的范围内选取符合条件的东东(ue中还有一Box形状选人,和Sphere选人差不多)

1、蓝图

img

2、c++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void UGolbalFunc ::TestFilter( AMyChar* _actor , float _radius)
{
TArray<AActor *> ignoreChars; //不忽略任何Actor,一般会忽略自身
TArray<TEnumAsByte <EObjectTypeQuery>> destObjectTypes; //目的类型集合
destObjectTypes.Add ((EObjectTypeQuery) ECollisionChannel::ECC_Pawn ); //这里强转一下,一一对应的
TArray<AActor *> destActors;
UKismetSystemLibrary::SphereOverlapActors_NEW (
GWorld
, _actor->GetActorLocation ()
, _radius
, destObjectTypes
, AMyChar::StaticClass () //只要这种类的Actor
, ignoreChars, destActors );

UE_LOG(GolbalFuncLogger, Warning , TEXT("--- destActors length:%d"), destActors.Num ());
for (auto elem : destActors)
{
AMyChar* mychar = Cast< AMyChar>(elem );
if (mychar )
{
UE_LOG(GolbalFuncLogger, Warning , TEXT("--- mychar uuid:%d"), mychar->GetUuid ());
//这里绘制一下,才能看出半径究竟有多长
:: DrawDebugLine(GWorld , _actor-> GetActorLocation(), mychar->GetActorLocation (), FColor:: Red, true , 5.f);
}
}
}

c++版效果图:

img