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

歡迎光臨散文網(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)遵守國家法律
衡水市| 自治县| 承德市| 漾濞| 福清市| 江达县| 鄂托克旗| 湘潭县| 银川市| 梅河口市| 定南县| 兴宁市| 涞水县| 鄂伦春自治旗| 盐亭县| 白朗县| 游戏| 和顺县| 浮山县| 磴口县| 正镶白旗| 二连浩特市| 肃宁县| 安国市| 淮安市| 浙江省| 黄冈市| 萍乡市| 信丰县| 阳春市| 巩义市| 德兴市| 苍南县| 柘荣县| 铜陵市| 扶余县| 黄大仙区| 瓮安县| 青岛市| 新绛县| 碌曲县|