最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【UE5C++】實(shí)現(xiàn)球形碰撞檢測(cè)的兩種個(gè)函數(shù):SweepMultiByObjectType和SphereTraceMult

2023-03-27 16:56 作者:一只箱君  | 我要投稿

UKismetSystemLibrary::SphereTraceMultiForObjects函數(shù)

(官方藍(lán)圖里面使用的就是這個(gè)函數(shù),推薦使用)

float SeekRadius = 100.0f;

TArray<FHitResult> HitResults2;

FVector BeginLocation = FollowCamera->GetComponentLocation();////起點(diǎn)位置

FVector EndLocation = BeginLocation + FollowCamera->GetForwardVector() * 1000;//終點(diǎn)位置


TArray<TEnumAsByte<EObjectTypeQuery>> ObjectTypes;

ObjectTypes.Add(EObjectTypeQuery::ObjectTypeQuery2);//Pawn

TArray<AActor* > IgnoreActors;

//參數(shù)列表場(chǎng)景可查看同名藍(lán)圖節(jié)點(diǎn)

bool bIsHit = UKismetSystemLibrary::SphereTraceMultiForObjects(GetWorld(), BeginLocation, EndLocation, SeekRadius, ObjectTypes, true, IgnoreActors, EDrawDebugTrace::ForDuration, HitResults2, true);

if (bIsHit)

{

for (FHitResult HitResult : HitResults2)

{

if (HitResult.GetActor() != NULL)

{

//對(duì)Actor們做的事情

}

}

}


SweepMultiByObjectType函數(shù)

TArray<FHitResult> HitResults;//檢測(cè)結(jié)果合集


FVector LineStart = FollowCamera->GetComponentLocation();;//起點(diǎn)位置

FVector LineEnd = LineStart + FollowCamera->GetForwardVector() * 3000;//終點(diǎn)位置


FCollisionObjectQueryParams ObjectQueryParams;//碰撞對(duì)象查詢參數(shù)

ObjectQueryParams.AddObjectTypesToQuery(ECC_Pawn); //添加檢測(cè)對(duì)象


FCollisionShape Shape;//碰撞檢測(cè)的形狀,可以是盒子,圓柱體或者球體

Shape.MakeSphere(150.0f);

Shape.SetSphere(150.0f);//設(shè)置大小


FCollisionQueryParams Params;//碰撞對(duì)象查詢參數(shù)

Params.AddIgnoredActor(this);//忽略自身

DrawDebugLine(GetWorld(), LineStart, LineEnd, FColor::Red, false, 2.0f, 0.0f, 2.0f);


//這個(gè)函數(shù)當(dāng)遇到第一個(gè)碰撞的物體的時(shí)候就會(huì)停下,然后收集所有的重疊部分

//第四個(gè)參數(shù)是球體的旋轉(zhuǎn),但是查詢中的旋轉(zhuǎn)沒有意義所以設(shè)置為空旋轉(zhuǎn)

if (GetWorld()->SweepMultiByObjectType(HitResults, LineStart, LineEnd, FQuat::Identity, ObjectQueryParams, Shape, Params))

{

for (FHitResult Hit : HitResults)//創(chuàng)建單個(gè)碰撞結(jié)果集,對(duì)多對(duì)象碰撞結(jié)果集合進(jìn)行遍歷

{

AActor* HitActor = Hit.GetActor();


if (HitActor)

{

//對(duì)Actor們做的事情

UKismetSystemLibrary::PrintString(this, TEXT("Hit Succeed,HitActorName is :") + HitActor->GetName());

}

}

}



【UE5C++】實(shí)現(xiàn)球形碰撞檢測(cè)的兩種個(gè)函數(shù):SweepMultiByObjectType和SphereTraceMult的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
乌鲁木齐市| 阳谷县| 徐闻县| 德兴市| 哈巴河县| 邯郸市| 铜鼓县| 文山县| 松桃| 泗洪县| 石家庄市| 同心县| 广南县| 岳西县| 都昌县| 七台河市| 高安市| 巢湖市| 海盐县| 全南县| 青川县| 武山县| 柯坪县| 汝南县| 玛纳斯县| 金乡县| 大英县| 礼泉县| 镇安县| 苍山县| 乐平市| 临漳县| 镇赉县| 达拉特旗| 成安县| 商水县| 宁蒗| 黔西| 太仓市| 襄樊市| 凤冈县|