0
点赞
收藏
分享

微信扫一扫

UE4学习4 用射线控制物体转圈圈 C++

冬冬_79d4 2023-03-16 阅读 57


上一篇博客里 咱已经在TouchBegan里面获取了物体 还是射线获取滴。

思路:接下来。在TouchMove里面 再发射一条射线 然后。打中物体就按打中那里的坐标算 没打中就按射线的end坐标算

这个坐标减去物体的坐标 得到一个FVector  这个物体SetActorRotation就阔以转了

来。完整马

FCollisionQueryParams Trace(FName(TEXT("TRACE")), true, GetPawn());//建立射线
Trace.bReturnPhysicalMaterial = false;
Trace.bTraceComplex = true;
Trace.AddIgnoredActor(GetPawn());//忽略默认人物棋子
FHitResult Hit(ForceInit);//这个hit装反馈信息
UWorld*world = GetWorld();
if (world) {
ECollisionChannel CollisionChannel= ECC_Pawn;//貌似是个忽略Actor 。
world->LineTraceSingleByChannel(Hit, lbeg, lend, CollisionChannel, Trace);
if (Hit.GetActor())
{
FVector Dir = Hit.Location - Sphere->GetActorLocation();//如果打中实物 就实物坐标减去物体坐标得到一个方向FVector
Dir.Z = 0;
Sphere->SetActorRotation(Dir.Rotation());
}
else if (!Hit.GetActor()) {
FVector Dir = lend - Sphere->GetActorLocation();//没打中东西就按鼠标射线的末端算咯。。

Sphere->SetActorRotation(Dir.Rotation());
}
}

嗯。就是酱紫



举报

相关推荐

UE4 C++与UMG

UE4 C++事件的定义

UE4/UE5 动画控制

UE4控制多个风扇旋转

UE4 动画

UE4问题

UE4 常用控制台命令

0 条评论